TensorFlow 計算模型 -- 計算圖
阿新 • • 發佈:2019-03-10
默認 第一個 use clas ant 執行 def flow name
TensorFlow是一個通過計算圖的形式表述計算機的編程系統
TensorFlow程序一般分為兩個階段,第一個階段需要定義計算圖中所有的計算(變量)
第二個階段為執行計算
如以下代碼
import tensorflow as tf # 第一階段定義所有的計算 a = tf.constant([1, 2], name=‘a‘) b = tf.constant([1, 2], name=b‘) result = a + b # 第二階段,執行計算 # 創建一個會話 sess = tf.Session() #運行會話執行計算 sess.run(result)# 關閉會話 sess.close()
通過tf.get_default_graph函數可以獲取當前默認的計算圖,通過a.graph可以查看張量所屬的計算圖
如果沒有特意指定a.graph等於默認的計算圖,下面的代碼輸出為True
print(a.graph is tf.get_default_graph()) # 輸出為True
除了使用默認的計算圖,TensorFlow支持通過tf.Graph函數來生成新的計算圖,不同計算圖上的張量和運算不會共享
import tensorflow as tf g1 = tf.Graph() with g1.as default():# 在計算圖g1中定義變量‘v‘,並設置初始值為0 v = tf.get_variable(‘v‘, shap=[1], initializer=tf.zeros_initializer) g2 = tf.Graph() with g2.as default(): # 在計算圖g1中定義變量‘v‘,並設置初始值為1 v = tf.get_variable(‘v‘, shap=[1], initializer=tf.oness_initializer) # 在計算圖g1中讀取變量‘v‘的取值 with tf.Session(graph=g1) as sess: tf.global_variables_initializer().run() with tf.variable_scope("", reuse=True): # 在計算圖g1中,變量v的取值應該為0,下面應輸出[0.] 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): # 在計算圖g2中,變量v的取值應該為1,下面應輸出[1.] print(sess.run(tf.get_variable(‘v‘)))
另外計算圖還可以通過tf.Graph.device函數指定運行的設備
g = tf.Graph() # 指定計算運行設的設備,指定到gpu0上 with g.device(‘/gpu:0‘): result a + b
TensorFlow 計算模型 -- 計算圖