在介紹 Tensorflow 中的簽名和追蹤時,我閱讀了以下聲明。TensorFlow 只會捕獲迭代張量或數據集的 for 循環。因此,請確保使用 for i in tf.range(x) 而不是 for i in range(x),否則循環將不會在圖中捕獲。相反,它將在跟蹤期間運行。(如果 for 循環旨在構建圖形,例如創建神經網絡中的每一層,這可能就是您想要的。)我對到底發生了什么感到困惑。如果它在跟蹤過程中運行,它如何不在圖形上注冊,以及 for 循環將如何構建圖形?
1 回答

動漫人物
TA貢獻1815條經驗 獲得超10個贊
tf.range顯示循環和循環之間區別的示例range:
for i in tf.range(3):
x = tf.add(x, i)
生成一個圖形,其中包含tf.while_loop與循環匹配的a for;這是 AutoGraph 的翻譯:
def cond(i, x):
return tf.lesss(i, 3)
def body(i, x):
x = tf.add(x, i)
return i, x
tf.while_loop(cond, body, ...)
反過來:
for i in range(3):
x = tf.add(x, i)
導致包含三個調用的圖形tf.add,并由i常量替換,沒有任何循環操作:
x = tf.add(x, 0)
x = tf.add(x, 1)
x = tf.add(x, 2)
添加回答
舉報
0/150
提交
取消