为了账号安全,请及时绑定邮箱和手机立即绑定

在 Tensorflow 中追踪

在 Tensorflow 中追踪

眼眸繁星 2023-05-16 14:43:10
在介绍 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)


查看完整回答
反对 回复 2023-05-16
  • 1 回答
  • 0 关注
  • 69 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信