1. 程式人生 > >tensorflow學習(2):計算圖,tf.get_default_graph(),tf.Graph()

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

一、基本概念

顧名思義,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")))