220

TensorFlow には、グラフの一部を評価する 2 つの方法があります:Session.run変数のリストとTensor.eval. これら2つに違いはありますか?

4

6 に答える 6

44

テンソル フローに関する FAQ セッションには、まったく同じ質問に対する回答があります。先に進み、ここに残します。


tTensorオブジェクトの場合t.eval()sess.run(t)(sessは現在のデフォルト セッションです。次の 2 つのコード スニペットは同等です。

sess = tf.Session()
c = tf.constant(5.0)
print sess.run(c)

c = tf.constant(5.0)
with tf.Session():
  print c.eval()

with2 番目の例では、セッションはコンテキスト マネージャーとして機能し、ブロックの存続期間中、デフォルト セッションとしてインストールする効果があります。コンテキスト マネージャーのアプローチは、単純なユース ケース (単体テストなど) のコードをより簡潔にすることができます。コードが複数のグラフとセッションを扱う場合は、 を明示的に呼び出す方が簡単な場合がありますSession.run()

多くのことが明確になる可能性があるため、少なくとも FAQ 全体に目を通すことをお勧めします。

于 2015-11-12T07:28:42.570 に答える
2

eval()リスト オブジェクトを処理できません

tf.reset_default_graph()

a = tf.Variable(0.2, name="a")
b = tf.Variable(0.3, name="b")
z = tf.constant(0.0, name="z0")
for i in range(100):
    z = a * tf.cos(z + i) + z * tf.sin(b - i)
grad = tf.gradients(z, [a, b])

init = tf.global_variables_initializer()

with tf.Session() as sess:
    init.run()
    print("z:", z.eval())
    print("grad", grad.eval())

でもSession.run()できる

print("grad", sess.run(grad))

私が間違っている場合は修正してください

于 2017-10-17T17:31:19.243 に答える