小编典典

在 TensorFlow 中,Session.run() 和 Tensor.eval() 有什么区别?

all

TensorFlow 有两种方法来评估图的一部分:Session.run在变量列表和Tensor.eval. 这两者有区别吗?


阅读 65

收藏
2022-06-15

共1个答案

小编典典

如果你有一个Tensort,callingt.eval()就相当于
call tf.get_default_session().run(t)

您可以将会话设置为默认值,如下所示:

t = tf.constant(42.0)
sess = tf.Session()
with sess.as_default():   # or `with sess:` to close on exit
    assert sess is tf.get_default_session()
    assert t.eval() == sess.run(t)

最重要的区别是您可以使用sess.run()在同一步骤中获取许多张量的值:

t = tf.constant(42.0)
u = tf.constant(37.0)
tu = tf.mul(t, u)
ut = tf.mul(u, t)
with sess.as_default():
   tu.eval()  # runs one step
   ut.eval()  # runs one step
   sess.run([tu, ut])  # evaluates both tensors in a single step

请注意,每次调用evalandrun都会从头开始执行整个图表。要缓存计算结果,请将其分配给tf.Variable.

2022-06-15