tensorflow學習(2):計算圖,tf.get_default_graph(),tf.Graph()
阿新 • • 發佈:2018-11-25
一、基本概念
顧名思義,TensorFlow的名字已經出賣了它的“靈魂”,TensorFlow=tensor(張量)+flow(流動)。TensorFlow是一個通過計算圖的形式來表達計算的程式設計框架。其每一個計算都是計算圖上的一個節點,而節點之間的邊描述了計算之間的依賴關係。
計算圖是TensorFlow中最基本的一個概念,TensorFlow中的所有計算都會被轉化為計算圖上的節點。
上圖是兩個張量進行某種計算的計算圖,張量都用節點表示,邊代表了計算之間的依賴關係,這裡的operation其實也應該是個圓圈。
假設以上是加的關係,那麼有程式碼如下:
import tensorflow as tf a = tf.constant([1,2]) #定義常量 b = tf.constant([3,4]) result = a + b #定義關係 with tf.Session() as sess: sess.run(result) #輸出[4,6]
二、tf.get_default_graph()
功能:這個函式可以獲取當前預設的計算圖
例如,在上述程式碼的with語句塊中加入如下語句
#通過a.graph可以檢視張量所屬的計算圖
print(a.graph is tf.get_default_graph()) #輸出True
三、tf.Graph()
除了使用預設計算圖,TensorFlow支援通過tf.Graph()來生成新的計算圖。不同計算圖上的張量和運算都不會共享
import tensorflow as tf g1 = tf.Graph() with g1.as_default(): #定義變數v,並設定初始值為0 v = tf.get_variable("v", shape = [1], initializer = tf.zeros_initializer) g2 = tf.Graph() with g2.as_default(): #定義變數v,並設定初始值為1 v = tf.get_variable("v", shape = [1], initializer = tf.ones_initializer) #在計算圖g1中讀取變數v的值 with tf.Session(graph = g1) as sess: tf.global_variables_initializer().run() with tf.variable_scope("",reuse = True): print(sess.run(tf.get_variable("v"))) #在計算圖g2中讀取變數v的值 with tf.Session(graph = g2) as sess: tf.global_variables_initializer().run() with tf.variable_scope("",reuse = True): print(sess.run(tf.get_variable("v")))