查看代码片段:
import tensorflow as tf
x = tf.Variable(1)
op = tf.assign(x, x + 1)
with tf.Session() as sess:
tf.global_variables_initializer().run()
print(sess.run([x, op]))
有两种可能的结果:
x=1 和 op=2
x=2 和 op=2
它们取决于评估的顺序,对于第一种情况,x在 之前评估op,对于第二种情况,x在 之后评估op。
我已经多次运行代码,但结果总是x=2 and op=2. 所以我想tensorflow可以保证x在op. 这样对吗?以及如何tensorflow保证依赖?
更新
对于上述情况,结果是确定的。但在以下情况下,结果是不确定的。
import tensorflow as tf
x = tf.Variable(1)
op = tf.assign(x, x + 1)
x = x + 0 # add this line
with tf.Session() as sess:
tf.global_variables_initializer().run()
for i in range(5):
print(sess.run([x, op]))
在第一个代码中,xisVariable并且op取决于x,所以x总是在 之后求值op。但在第二种情况下,x变成Tensor,并且op依赖于Variable x(After x = x + 0, x is override)。所以op不依赖于Tensor x.
蝴蝶不菲
相关分类