TensorFlow には、グラフの一部を評価する 2 つの方法があります:Session.run
変数のリストとTensor.eval
. これら2つに違いはありますか?
質問する
123341 次
6 に答える
44
テンソル フローに関する FAQ セッションには、まったく同じ質問に対する回答があります。先に進み、ここに残します。
t
がTensor
オブジェクトの場合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()
with
2 番目の例では、セッションはコンテキスト マネージャーとして機能し、ブロックの存続期間中、デフォルト セッションとしてインストールする効果があります。コンテキスト マネージャーのアプローチは、単純なユース ケース (単体テストなど) のコードをより簡潔にすることができます。コードが複数のグラフとセッションを扱う場合は、 を明示的に呼び出す方が簡単な場合があります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 に答える