gpt4 book ai didi

python - 为什么我们在 TensorFlow 中需要 "assign"?

转载 作者:太空狗 更新时间:2023-10-30 02:51:44 25 4
gpt4 key购买 nike

我正在看一个例子 here .我在那里看到以下操作顺序:

import tensorflow as tf

v1 = tf.get_variable("v1", shape=[3], initializer = tf.zeros_initializer)
inc_v1 = v1.assign(v1+1)
init_op = tf.global_variables_initializer()
s = tf.Session()
s.run(init_op)
s.run(inc_v1)

结果我们得到:

array([1., 1., 1.], dtype=float32)

我不明白“分配”操作背后的逻辑。特别是,我用看起来更简单的东西替换了它:

import tensorflow as tf

v1 = tf.get_variable("v1", shape=[3], initializer = tf.zeros_initializer)
inc_v1 = v1 + 1
init_op = tf.global_variables_initializer()
s = tf.Session()
s.run(init_op)
s.run(inc_v1)

我得到了完全相同的输出。那么,为什么我们需要分配?

最佳答案

它获取原始张量和新张量,用新值更新张量的原始值并返回原始张量的引用。看看在 Tensorboard 上生成的图表:

assign 操作返回对原始 Tensor 的引用:

Assign

没有assign,只是创建另一个张量来添加一个常量值:

No Assign

如果您打印张量 v1 的评估(在运行 inc_v1 之后),它会输出 [1。 1. 1.] 作为操作的结果,它被重新分配给原始张量。在第二种情况下,它将保持为 [0。 0. 0.].

关于python - 为什么我们在 TensorFlow 中需要 "assign"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54809628/

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