TensorFlow計算模型—計算圖
阿新 • • 發佈:2018-04-14
數據 計算模型 場景 關系 variables 日誌 自動 可見 font
TensorFlow是一個通過計算圖的形式來表述計算的編程系統。其中的Tnesor,代表它的數據結構,而Flow代表它的計算模型。TensorFlow中的每一個計算都是計算圖上的一個節點,而節點之間的線描述了計算之間的依賴關系。
在TensorFlow程序中,系統會自動維護一個默認的計算圖,通過tf.get_default_gragh函數可以獲取當前默認的計算圖。
除了默認的計算圖,TensorFlow也支持通過tf.Graph函數來生成新的計算圖。不同的計算圖上的張量和運算不會共享。如下示例:
#coding:utf-8 import tensorflow as tf g1= tf.Graph() with g1.as_default(): #在計算圖g1中定義一個變量v,並且設置初始值為0 v = tf.get_variable(name="v",initializer=tf.zeros_initializer( )(shape=[1])) g2 = tf.Graph() with g2.as_default(): # 在計算圖g2中定義一個變量v,並且設置初始值為0 v = tf.get_variable(name="v", initializer=tf.ones_initializer( )(shape=[1])) with tf.Session(graph=g1) as sess: # 運行初始化的兩種方法 init = tf.global_variables_initializer() sess.run(init)
#這個方法已經過時 #tf.initialize_all_variables().run() #這句話是什麽意思? with tf.variable_scope("",reuse=True): #通過名字獲取變量 print(sess.run(tf.get_variable("v"))) with tf.Session(graph=g2) as sess:# 運行初始化的兩種方法 init = tf.global_variables_initializer() sess.run(init) #tf.initialize_all_variables().run() #這句話是什麽意思? with tf.variable_scope("",reuse=True): #通過名字獲取變量 print(sess.run(tf.get_variable("v")))
上面的代碼產生了兩個計算圖,每個計算圖中定義了一個名字為“v”的變量。在計算圖g1中,將v初始化為0;在計算圖g2中,將v初始化為1.由此可見,當運行不同的計算圖時,變量v的值也不一樣。
Tensorflow中的計算圖不僅僅可以用來隔離張量和運算,還可以提供管理張量和運算的機制。
計算圖可以通過tf.Graph.device()函數來指定運行的設備。這是因為tensorflow使用了GPU機制。一下代碼演示指派GPU的操作。
import tensorflow as tf a = tf.constant([1,2]) b = tf.constant([3,4]) g = tf.Graph() with g.device(‘/gpu:0‘): c = tf.add(a, b, "add") with tf.Session() as sess: print(sess.run(c))
在一個計算圖中,可以通過集合(collection)來管理不同類別的資源。比如通過tf.add_to_collection()函數將資源加入一個或多個集合中。然後通過tf.get_collection獲取集合中的所有資源。這裏的資源可以是張量、變量或者運行Tensorflow程序所需要的隊列資源等等。
TensorFlow中維護的集合列表
集合名稱 | 集合內容 | 使用場景 |
---|---|---|
tf.GraphKeys.VARIABLES |
所有變量 | 持久化TensorFlow模型 |
tf.GraphKeys.TRAINABLE_VARIABLES |
可學習的變量(一般指神經網絡中的參數) | 模型訓練、生成模型可視化內容 |
tf.GraphKeys.SUMMARIES |
日誌生成相關的張量 | TensorFlow計算可視化 |
tf.GraphKeys.QUEUE_RUNNERS |
處理輸入的QueueRunner | 輸入處理 |
tf.GraphKeys.MOVING_AVERAGE_VARIABLES |
所有計算了滑動平均值的變量 | 計算變量的滑動平均值 |
TensorFlow計算模型—計算圖