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

動漫人物
TA貢獻(xiàn)1815條經(jīng)驗 獲得超10個贊
tf.range顯示循環(huán)和循環(huán)之間區(qū)別的示例range:
for i in tf.range(3):
x = tf.add(x, i)
生成一個圖形,其中包含tf.while_loop與循環(huán)匹配的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)
導(dǎo)致包含三個調(diào)用的圖形tf.add,并由i常量替換,沒有任何循環(huán)操作:
x = tf.add(x, 0)
x = tf.add(x, 1)
x = tf.add(x, 2)
添加回答
舉報
0/150
提交
取消