[英]The difference between sess.run(c) and c.eval() in Tensorflow
在以下示例中,当打印出节点“ c
”的值时,在我看来, print sess.run(c)
和print c.eval()
之间没有区别。 我可以假设sess.run(c)
和c.eval()
是等效的吗? 还是有区别?
import tensorflow as tf
a = tf.Variable(2.0, name="a")
b = tf.Variable(3.0, name="b")
c = tf.add(a, b, name="add")
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print sess.run(c)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print c.eval()
当在张量上调用c.eval()
时, 基本上是在调用tf.get_default_session().run(c)
。 这是一个方便的快捷方式。
但是, Session.run()
更通用。
sess.run([a, b, ...])
。 当这些输出相关并且依赖于可能改变的状态时,重要的是要同时获得它们以获得一致的结果。 人们经常对此感到惊讶[1] , [2] 。 Session.run()
可以使用Tensor.eval()
没有的一些参数,例如RunOptions
,这些参数对于调试或分析很有用。
eval()
可以采用feed_dict
。 eval()
是Tensor
的属性。 但Operation
S,从而为global_variables_initializer()
另一方面不具有eval()
但run()
另一个方便的快捷键)。 Session.run()
可以同时运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.