gpt4 book ai didi

python - 为什么将 `tf.while_loop` 中的常量 i 用作 `loop_vars` ?

转载 作者:行者123 更新时间:2023-12-01 01:47:23 25 4
gpt4 key购买 nike

while_loop是这样的:

i = tf.constant(0)
c = lambda i: tf.less(i, 10)
b = lambda i: tf.add(i, 1)
r = tf.while_loop(c, b, [i])

i 用作增量变量。因此,i 是可变的。
为什么我们将 i 定义为常量?
为什么不i = tf.Variable(0, tf.int32)

最佳答案

i is used as a incremental variable. So, i is changeable.

不完全正确 - 如果是的话,i 可能不是是一个常量。

tf.add(i, 1) 不会更改 i,它采用张量 i 并通过添加 1 来创建一个新张量它。 (实际上,tensorflow 可能会为结果张量重用相同的内存分配,但这是与 tf.where 逻辑无关的优化)。

您可能会感到困惑,因为 lambda 中使用了相同的名称 i,但所有这些张量都是与每次迭代的操作输出相对应的不同张量。

因此,您声明的 i 实际上是迭代的第一个值(循环中的所有其他值也是如此,而不仅仅是计数器)。它确实是一个常数 0,因此这样声明它是有意义的。将初始值 0 声明为 Variable 会很尴尬。

关于python - 为什么将 `tf.while_loop` 中的常量 i 用作 `loop_vars` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51121885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com