TensorFlow 不會執行圖表外的代碼(如那些print()
語句);相反,這是由Python解釋器以正常順序執行的。放置它的另一種方式是:TensorFlow僅評估涉及張量的程序位。 print()
語句將在您構建圖形時執行,但由於它們不向圖形添加任何節點,所以在您實際運行圖形時,它們將不會再執行(使用tf.Session()
。
這可能會使有道理的,如果我們看一下你的示例程序進行更詳細的做:
graph = tf.Graph() # Create a new graph to contain a TensorFlow program.
with graph.as_default(): # By default, all created nodes will be added to `graph`.
x = tf.constant([[1],[2]]) # Add a constant node to `graph`.
print("hi1") # Print a message *during graph construction*.
y = tf.constant([[1],[1]]) # Add a constant node to `graph`.
print("hi2") # Print a message *during graph construction*.
z = tf.add(x,y) # Add an addition node to `graph`.
print("hi3") # Print a message *during graph construction*.
with tf.Session(graph=graph) as sess: # Create a session for running `graph`.
z_output = sess.run([z]) # Run the node `z` and all nodes it depends on.
如果你想TensorFlow運行一些一段代碼,您必須將其添加到圖形爲此,TensorFlow提供了複製機制共同語言功能,如tf.Print()
,tf.while_loop()
等
您c應該添加tf摘要,記錄圖中變量的進度 –