1. 程式人生 > >tensorflow入門(三)---tensorflow的計算圖和tensor

tensorflow入門(三)---tensorflow的計算圖和tensor

tensorflow程式通常被組織成一個圖的構建和圖的執行階段,例如我們搭建一個神經網路,組織各個層及之間關係的過程稱為圖的構建,然後通過不斷反覆的執行圖中的訓練op來逐漸優化引數。在圖的構建階段,就是各種op的拼接組合,op之間流通的tensor是由最初的一個op產生的,它被稱為源op,沒有輸入tensor,只有輸出tensor,比如說常量(Constant)就是一個源op:

import tensorflow as tf
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
# 建立一個常量op,產生一個1行2列的矩陣
matrix_1 = tf.constant([[3.,4.]])
# 建立一個常量op,產生一個2行1列的矩陣
matrix_2 = tf.constant([[5.],[6.]])
# 建立一個tf矩陣乘法op,
# matrix_1和matrix_2為輸入tensor,product為輸出tensor
product = tf.matmul(matrix_1,matrix_2)
# 執行這個圖
with tf.Session() as sess:
    print sess.run(product)
我們這樣就建立了一個最簡單的圖,圖的輸出埠為product,這個圖包含了三個op,兩個源constant()op,一個matmul()op,如果要想真正的執行得到乘法之後的結果,需要執行會話,然後獲取product的值。Session物件在使用完之後需要手動關閉close(),也可以使用‘with’讓程式自動的執行完之後關閉。

互動式的會話:
在每次啟動會話的時候都要指定會話模式,然後呼叫session.run()來執行,為了便於互動式的執行,可以使用InteractiveSession來代替Session類。使用Tensor.eval()和Operation.run()來代替Session.run().
和正常的Session唯一的區別是InteractiveSession將自身的tf.Session()作為預設的session來呼叫,例如:
import tensorflow as tf
sess = tf.InteractiveSession()  # 聲明後面所有需要用到的session都為預設的session
a = tf.Variable(2.0)
b = tf.constant(3.0)
c = tf.mul(a,b)
a.initializer.run()             # 自動呼叫自身的session
print c.eval()                  # 自動呼叫自身的session
sess.close()
前面一直在提到一個詞叫tensor,但是究竟tensor是什麼?tensor是一個數據結構,代表所有的資料,計算圖中,所有操作之間傳遞的資料都是tensor,可以把tensorflow中的tensor看成是一個多維的陣列或者列表,描述tensor形態的方法包括:
tf.rank(),返回的是tensor的秩,即維數
tf.shape()返回的是tensor的形狀,每一維的維度
tf.size()返回的是tensor的元素的個數
除了維度,tensor還有一個數據型別的屬性,可以為一個tensor指定下列型別中的任意一個:
tf.float32: 32位浮點數.
tf.float64: 64位浮點數
tf.int64:   64位有符號整型
tf.int32:   32位有符號整型
tf.int16:   16位有符號整型
tf.int8:    8位有符號整型
tf.uint8:   8位無符號整型
tf.string:  可變長度的字元陣列,即字串
tf.bool:    布林型別

1.Variable-變數
變數用來維護圖執行過程中的狀態資訊
import tensorflow as tf
state = tf.Variable(0)
one = tf.constant(1)
#計算當前需要更新的值
new_value = tf.add(state,one)
#建立一個op完成更新操作,屬性與動作分離開來
update = tf.assign(state,new_value)

init_op = tf.initialize_all_variables()
with tf.Session() as sess:
    sess.run(init_op)
	print sess.run(state)
	for _ in range(10):
	    sess.run(update)
		print sess.run(state)
2. Fetch
為了取回操作的輸出內容,可以使用Session物件的run()呼叫執行圖時,傳入一些tensor這些tensor會幫助你取回結果,可以取回一個或者多個tensor
import tensorflow as tf
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.1
config.gpu_options.allow_growth = True
num_1 = tf.constant(3)
num_2 = tf.constant(4)
add = tf.add(num_1,num_2)
mul = tf.mul(num_1,num_2)
with tf.Session(config = config) as sess:
    result = sess.run([add,mul])   #執行獲取這個列表的元素的計算值,並且將列表返回
    print result
3. Feed
計算圖中的tensor之前接觸的都是以常量或者變數形式存在的,Tensorflow還提供了feed機制,即,之前只是建立一個佔位符,不做初始化,在執行的時候對其進行賦值,比如在一個神經網路中我們的輸入資料通常都是用這種形式送到網路中去。feed只在呼叫它的方法中是有效的,方法結束feed就會消失。
import tensorflow as tf
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.1
config.gpu_options.allow_growth = True
num_1 = tf.placeholder(tf.float32)
num_2 = tf.placeholder(tf.float32)
mul = tf.mul(num_1,num_2)
with tf.Session(config = config) as sess:
    print sess.run(mul,feed_dict = {num_1:4.5,num_2:2})

相關推薦

tensorflow入門---tensorflow計算tensor

tensorflow程式通常被組織成一個圖的構建和圖的執行階段,例如我們搭建一個神經網路,組織各個層及之間關係的過程稱為圖的構建,然後通過不斷反覆的執行圖中的訓練op來逐漸優化引數。在圖的構建階段,就是各種op的拼接組合,op之間流通的tensor是由最初的一個op產生的,

tensorflow學習2計算,tf.get_default_graph(),tf.Graph()

一、基本概念 顧名思義,TensorFlow的名字已經出賣了它的“靈魂”,TensorFlow=tensor(張量)+flow(流動)。TensorFlow是一個通過計算圖的形式來表達計算的程式設計框架。其每一個計算都是計算圖上的一個節點,而節點之間的邊描述了計算之間的依賴關係。 計算圖

tarjan演算法入門——有向的強連通分量

一.概述. 強連通分量SCC是基於有向圖的一個概念,即“極大連通分量”.有向圖的強連通分量就是說一張圖G的子圖G',G'的每一個點u都可以遍歷到這張圖上的任意一個點v,且這張子圖G'極大,極大的意思可以參考雙連通分量的極大.   二.強連通分量與tarjan演算法. t

TensorFlow 學習 會話

    資料流圖是一種常用於平行計算的程式設計模型。大多數TensorFlow程式都是從資料流圖構建階段開始,這些函式可構建新的 tf.Operation(節點)和 tf.Tensor(邊緣)物件並將它們新增到 tf.Graph 例項中。TensorFlow 提供了一個預設圖,此

【AI實戰】快速掌握TensorFlow計算、會話

在前面的文章中,我們已經完成了AI基礎環境的搭建(見文章:Ubuntu + Anaconda + TensorFlow + GPU + PyCharm搭建AI基礎環境),以及初步瞭解了TensorFlow的特點和基本操作(見文章:快速掌握TensorFlow(一)),接下來將繼續學習掌握Tenso

TensorFlow初學者入門——MNIST進階

本人學習TensorFlow中的一些學習筆記和感悟,僅供學習參考,有疑問的地方可以一起交流討論,持續更新中。 本文學習地址為:TensorFlow官方文件,在此基礎上加入了自己的學習筆記和理解。 文章是建立在有一定的深度學習基礎之上的,建議有一定理論基礎之後再同步學習。 這次是利用Ten

轉:TensorFlow入門 雙端 LSTM 實現序列標註分詞

vsm max poc 代碼 單詞 arch 大致 雙端 fun http://blog.csdn.net/Jerr__y/article/details/70471066 歡迎轉載,但請務必註明原文出處及作者信息。 @author: huangyongye @creat_

迴圈神經網路系列Tensorflow中MultiRNNCell

迴圈神經網路系列(一) Tensorflow中BasicRNNCell 迴圈神經網路系列(二)Tensorflow中dynamic_rnn 經過前面兩篇博文,我們介紹瞭如何定義一個RNN單元,以及用dynamic_rnn來對其在時間維度(橫軸)上展開。我們今天要介紹的就是如何疊加多層

TensorFlow學習:tf.reduce_sum()

壓縮求和 tf.reduce_sum( input_tensor, axis=None, keepdims=None, name=None, reduction_indices=None, keep_dims=None ) Args:

tensorflow入門 變數的定義、初始化、值的檢視

1、常量 constant是TensorFlow的常量節點,通過constant方法建立,其是計算圖(Computational Graph)中的起始節點,是傳入資料; import tensorflow as tf sess = tf.Interact

AI探索Tensorflow程式設計模型

Tensorflow程式設計模型 。。。。後續完善   import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import numpy as np num_points = 1000 data_array = [] for i in x

Tensorflow框架

一、MNIST數字識別 首先載入MNIST手寫數字識別訓練集 mnist = input_data.read_data_sets("C:/Users/14981/Desktop/Deep Learning/", one_hot = True) # 載入資料集 print("Traing da

深度學習入門——TensorFlow介紹

TensorFlow     1.使用圖 (graph) 來表示計算任務.     2.在被稱之為 會話 (Session) 的上下文 (context) 中執行圖.     3.使用 tensor 表示資料.     4通過 變數 (Variable) 維護狀態.

TensorFlow學習:CNN-Relation-Extraction

cnn_relation_extraction部分記錄 import tensorflow as tf import numpy as np import os import datetime import time from cnn_relation_extraction

TensorFlow初學者入門——TensorFlow安裝測試

本人學習TensorFlow中的一些學習筆記和感悟,僅供學習參考,有疑問的地方可以一起交流討論,持續更新中。 pip安裝TensorFlow 安裝 TensorFlow 過程中要涉及安裝或升級的包可以在官方的GitHub上獲得。 在Ubuntu或者Mac下安裝pip(python2)或者

TensorFlow入門多層 LSTM 通俗易懂版

歡迎轉載,但請務必註明原文出處及作者資訊。 @author: huangyongye @creat_date: 2017-03-09 前言: 根據我本人學習 TensorFlow 實現 LSTM 的經歷,發現網上雖然也有不少教程,其中很多都是根據官方

TensorFlow學習:GraphSession

更新時間: 2017.5.5 對一些函式或者類有了新的認識。重要的地方修改一下。 簡化了大量的東西,保留重點,只寫了常用函式的用法,其他的根據需要看文件 之前講完變數常量等等基本量的操作,意味著最基本的東西都有了,然後接下來很重要的就是那

tensorflow筆記之 tensorboard的使用

程式碼如下:(命名檔案2.py) 1 import tensorflow as tf 2 import numpy as np 3 4 ## prepare the original data 5 with tf.name_scope('data'): 6 x_data = np.

TensorFlow入門簡單前饋網路實現 mnist 分類

歡迎轉載,但請務必註明原文出處及作者資訊。 兩層FC層做分類:MNIST 在本教程中,我們來實現一個非常簡單的兩層全連線網路來完成MNIST資料的分類問題。 輸入[-1,28*28],

######較深的應用TensorFlow學習:GraphSession ######較深的應用

之前講完變數常量等等基本量的操作,意味著最基本的東西都有了,然後接下來很重要的就是那些量和操作怎麼組成更大的集合,怎麼執行這個集合。這些就是計算圖譜graph和Session的作用了。 IV.Graph https://www.tensorflow.org/versions/r0.11/api_docs/p