- 在一个
sess.run()
环境中,一个大图里面的节点只会计算一次,哪怕有c->a->b
这种依赖关系,运行sess.run([a,b])
这种时候,a也只会被执行一次。其内部的机制是:先查看图中的依赖关系,得到本次sess.run()
需要计算图中那些节点,然后进行一次计算,返回计算的a,b的值。 - 如果是多次调用
sess.run()
那么就会计算多次。
一个生动的例子:和addop
有依赖关系的c
,在一个sess.run
中addop
只被运行了一次,
a = tf.constant(1)
b = tf.Variable(1)
addop= tf.assign(b,b+3)
c = addop + a
with tf.Session() as sess:
tf.global_variables_initializer().run()
cc,bb = sess.run([addop,c])
print(cc,bb)
bb = sess.run(addop)
print(bb)
>>4 5
7
网友评论