sess.run(c)
とc.eval()
を同じセッションで呼び出すと、まったく同じ結果が得られます。
コードにsess.run
と<tensor>.eval()
のコールを混在させることはできますが、コードの整合性が損なわれます。
私の意見では、常にsess.run
を使用する方がよいでしょう.1回の呼び出しでbeacuseを使用すると、1つ以上のテンソルを評価できます。
代わりに<tensor>.eval()
を使用すると、はと指定された<tensor>
と評価されます。
あなたがこのスクリプトを実行しているパフォーマンスの違いを見ることができます:
Tensorflowのr0.11とそれを実行する
import time
import tensorflow as tf
a=tf.constant(5.0)
b=tf.constant(6.0)
c=a*b
start = time.time()
with tf.Session() as sess:
sess.run([c]*100)
end_run = time.time() - start
start = time.time()
with tf.Session() as sess:
for _ in range(100):
c.eval()
end_eval = time.time() - start
print('Run: {}\nEval: {}'.format(end_run, end_eval))
、CPU(インテルi3は)上で、それがこの結果を与える:
Run: 0.009401798248291016
Eval: 0.021142005920410156
することができますように参照してください、100要素のリストでの呼び出しの実行がはるかに高速ですし、100 c.eval()
の呼び出しを実行します。
実際、Tensorflowは、sess.run
コールでテンソルが1度だけ評価され、結果を再利用して必要に応じて他の計算を実行します。