在介绍 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
提交
取消