1. 程式人生 > >TensorFlow 計算模型 -- 計算圖

TensorFlow 計算模型 -- 計算圖

默認 第一個 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 計算模型 -- 計算圖