gpt4 book ai didi

python - 控制 TensorFlow 中的依赖关系

转载 作者:行者123 更新时间:2023-12-01 00:56:15 31 4
gpt4 key购买 nike

我试图理解以下行为:当我运行代码时

import tensorflow as tf

x = tf.Variable(1.0)
y = tf.Variable(0.0)
f = x*x

op0 = tf.assign_add(x, 1.0)
with tf.control_dependencies([op0]):
op1 = tf.assign(y, f)

with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
sess.run(tf.local_variables_initializer())
sess.run(op1)
print(y.eval())

结果有时是 4.0 正如我所期望的,但有时它是 1.01.0 的结果表明依赖项 op0 被忽略。但是,由于我有时会得到 4.0,因此必须计算 op0,据我所知,这只能由依赖项触发。

如果我做类似的事情,但没有张量f,例如,

import tensorflow as tf

x = tf.Variable(1.0)
y = tf.Variable(0.0)

op0 = tf.assign_add(x, 1.0)
with tf.control_dependencies([op0]):
op1 = tf.assign(y, x) # <--- not using f anymore...

with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
sess.run(tf.local_variables_initializer())
sess.run(op1)
print(y.eval())

结果始终如预期的2.0

有人可以解释一下为什么第二种情况下的行为不同,以及在第一种情况下更新 x 后如何强制执行 f 的评估?

最佳答案

您必须确保在第一次赋值后计算f。所以:

import tensorflow as tf

x = tf.Variable(1.0)
y = tf.Variable(0.0)

op0 = tf.assign_add(x, 1.0)
with tf.control_dependencies([op0]):
f = x * x
op1 = tf.assign(y, f)

with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
sess.run(tf.local_variables_initializer())
sess.run(op1)
print(y.eval())
# 4.0

关于python - 控制 TensorFlow 中的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56230827/

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