gpt4 book ai didi

python - tf.print 结果不一致

转载 作者:太空宇宙 更新时间:2023-11-03 20:25:17 32 4
gpt4 key购买 nike

我试图理解 tensorflow 图中的执行顺序。当我运行以下代码时。 tf.print 打印未确定的结果。

import tensorflow as tf

for _ in range(20):
tf.reset_default_graph()
use_resource = False
v = tf.Variable(0, trainable=False, use_resource=use_resource, name='v')
v_op1 = v.assign_add(1, name='v_op1')
v_op2 = v.assign_add(2, name='v_op2')

with tf.control_dependencies([v_op1]):
w1 = tf.print('msg1:', v, name='v--w')
with tf.control_dependencies([w1, v_op2]):
w2 = tf.print('msg2:', v, '\n', name='w--w')
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
sess.run(w2)

这是 20 次重复的输出。有时,它打印“msg1:3”,有时它打印“msg1:1”。那么这是怎么回事呢?

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 1
msg2: 3

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 3
msg2: 3

msg1: 1
msg2: 3

最佳答案

我认为发生的情况是您在 w1 和 v_op2 之间创建了一场竞赛,并且它们都同时执行。 (用这些行)

with tf.control_dependencies([w1, v_op2]):

例如,如果 v_op2 在 w1 之前执行,则 v 添加 2,然后当执行 w1 时,它会向其添加 1,从而使 msg_1 打印 3。但是,当 w1 能够在 v_op2 之前完成时执行后将 2 添加到 v 后。

例如案例一

v_op2 executed:
v = 2
w1 executed:
v = 3
print(v)

案例2

w1 executed
v = 1
print(v)
v_op2 executed
v=3

关于python - tf.print 结果不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57875937/

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