繁体   English   中英

Tensorflow中sess.run(c)和c.eval()之间的区别

[英]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()更通用。

  1. 它允许您一次查询多个输出: sess.run([a, b, ...]) 当这些输出相关并且依赖于可能改变的状态时,重要的是要同时获得它们以获得一致的结果。 人们经常对此感到惊讶[1][2]
  2. Session.run()可以使用Tensor.eval()没有的一些参数,例如RunOptions ,这些参数对于调试或分析很有用。
    • 但是请注意, eval() 可以采用feed_dict
  3. eval()Tensor的属性。 Operation S,从而为global_variables_initializer()另一方面不具有eval()run()另一个方便的快捷键)。 Session.run()可以同时运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM