gpt4 book ai didi

python - Tensorflow中sess.run(c)和c.eval()的区别

转载 作者:行者123 更新时间:2023-12-01 01:52:28 25 4
gpt4 key购买 nike

在下面的示例中打印节点“c”的值时,对我来说,似乎 print sess.run(c) 之间没有区别和打印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() 时,you are basically calling 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 的属性。但另一方面,诸如 global_variables_initializer() 之类的操作没有 eval(),而是有 run()(另一个方便的快捷方式)。 Session.run() 可以运行两者。

关于python - Tensorflow中sess.run(c)和c.eval()的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50577552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com