请参阅代码段:
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]))
在第一个代码中,x
是Variable
和op
依赖于x
,因此x
总是在之后进行评估op
.但在第二种情况下,x
变为Tensor
,op
依赖于Variable x
(之后x = x + 0
,x被覆盖).所以op
不依赖于Tensor x
.