簡體   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