tensorflow的計算圖總結
計算圖
在 TensorFlow 中用計算圖來表示計算任務。 計算圖,是一種有向圖,用來定義計算的結構,實際上就是一系列的函式的組合。 用圖的方式,使用者通過用一些簡單的容易理解的數學函式元件,就可以建立一個複雜的運算
在 TensorFlow 使用圖,分為兩步:建立計算圖 和 執行圖
圖,在形式上由結點 Nodes 和邊 Edges 組成。- Nodes,用圓圈表示,代表一些對資料進行的計算或者操作(Operation)。 - Edges,用箭頭表示,是操作之間傳遞的實際值(Tensor)
建立圖
graph = tf.Graph()
訪問上下文管理器
with graph.as_default():
用with表示我們用 context manager 告訴 TensorFlow 我們要向某個具體的 graph 新增 Op 了
執行圖圖必須在會話(Session)裡被啟動,會話(Session)將圖的 op 分發到 CPU 或 GPU 之類的裝置上,同時提供執行 op 的方法,這些方法執行後,將產生的張量(tensor)返回
## 開啟session
sess = tf.Session()`
一旦開啟了 Session,就可以用 run() 來計算想要的 Tensor 的值
用完會話,記得關掉
sess.close()
Fetches
fetches是session.run()的一個引數,它可以接收任何一個我們想要執行的op或者Tensor,或者他們對應的list結構。
- 如果是tensor,那麼session.run()輸出的就是一個Numpy 陣列
- 如果是Op,那麼session.run()輸出的就是None
比如:sess.run(b)就是告訴Session要把計算b所需要的結點都找到按順序執行並且輸出結果。
全域性變數初始化
tf.global_variables_initializer()
表示將所有定義的Variable變數都準備好,以便於後續使用,這個Op也可以傳給給session.run.比如:
init = tf.global_variables_initializer() … sess.run(init)
張量Tensor和OP
在tensorflow中使用tensor來表示所有的資料結構,計算圖中操作Op結點之間傳遞的都是Tensor
- 定義tensor時可以直接使用numpy傳遞給Op結點,因為tensorflow的Op可以將python的資料型別轉化為tensor包括numbers,booleans,strings或者list。
- 圖中的任何結點都叫做Operation簡稱:Op
- 每個Op的輸出會被傳遞到其他Op或者sess.run()
Variable
Variable,變數是維護圖執行過程中的狀態資訊的,需要它來保持和更新引數數值,是需要動態調整的。
- Tensor 和Operation都是一成不變的,而Variable是可以隨著時間改變的
- Variables可以用在任何使用tensor的Op中,它當前的值就會被傳遞給使用它的Op
- Variable通常的初始值是一些很大的0,1或者隨機值tensor,或者內建op:tf.zeros(),tf.ones()等
- Variable在graph中,狀態由session管理,也是在session中進行初始化,session可以追蹤variable的當前值是多少。
- session可以只初始化一部分variable
- 使用tf.variables_initializer,傳入初始化變數列表
- variable的值是可以被改變的
- 比如使用variable.assign(variable),或者variable.assign_add(1)
- 每個session維護獨立的variable變數值,同一個variable不同的session值可以是不同的。
- 當各種Optimizer優化器訓練機器學習模型時,variable就會隨之改變,當使用variable中的trainable=False屬性可以不被Optimizer改變。
name_scopes
- name_sopes可以用來管理圖,可以把一組Op放到一個組塊中
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。