2016-12-31 137 views
0

例如,當我們計算變量cresult = sess.run(c)時,TF是否僅計算計算所需的輸入c或更新完整計算圖的所有變量?TensorFlow是否使用sess.run()執行整個計算圖?

另外,我似乎並沒有能夠做到這一點: c = c*a*b 因爲我偶數初始化ctf.Variable(tf.constant(1))uninitialized variable錯誤卡住。有什麼建議麼?

+0

如果你願意,我可以給你一個答案,但是如果你提供了你正在面對這個錯誤的代碼,它會對你更有用。1)不,整個圖不計算。 2)那不會初始化,除非你使用'sess.run(init)'運行' – martianwars

+0

@martianwars糾正了初始化問題。只是想確認'sess.run(var)'是否只運行計算var所需的大圖的一部分,或者重新計算整個圖以更新所有變量並返回查詢的對象。 –

+1

只是圖的一部分,但如果您提供代碼段,我可以幫助您進一步提供 – martianwars

回答

0

由於TF的Python代碼只設置圖形,它實際上是通過本地實現的所有ops執行的,所以您的變量需要在此底層環境中執行。這通過執行兩個OPS - 本地和全局變量初始化:

session.run(tf.global_variables_initializer(), tf.local_variables_initializer())

在原來的問題 - 據我所知 - 是的,它計算所有的圖,它需要你養活佔位符,即使執行的操作(在會話中)不依賴於它們。