Tensorflow:.run()と.eval()の違い


Tensorflow:.run()と.eval()の違い
eval()は実はtfです.Tensorのセッションrun()の別の書き方ですが、両者に差があります
1.eval():文字列stringオブジェクトを有効な式に変換し、評価演算に参加して計算結果を返す.eval()も計算を開始する方法の1つです.Tensorflowの基本原理に基づいて、まず図を定義してから図を計算する必要があり、ここで図を計算する関数にはrun()関数がよく見られる.run().同様にeval()もこのような関数であり、3.なお、eval()はtfにのみ使用できる.Tensorクラスオブジェクト,すなわち出力のあるOperationである.出力のないOperationについては使用可能である.run()またはSession.run();Session.run()にはこの制限はありません.
Tensor.runとTensorevalの違い
セッション中にノードを実行する必要がある場合、Sessionという2つの方法があります.run()とTensor.eval()
説明一
1.tがtfである場合.Tensorオブジェクト、tf.Tensor.evalはtfです.Session.runの略語(sessは現在のtf.get_default_sessionである.以下の2つのコードフラグメントは等価である:2.第2の例では、セッションはwithブロックのライフサイクルのデフォルトセッションとしてインストールする役割を果たすコンテキストマネージャとして機能する.コンテキストマネージャメソッドは、ユニットテストなどの簡単な例により簡潔なコードを提供することができる.コードが複数のグラフィックとセッションを処理する場合は、Sessionをより直接使用できます.run()は明示的に呼び出されます.
解釈2
Tensor tがある場合、t.eval()を使用する場合、tf.get_default_session().run(t). 例:
t = tf.constant(42.0)
sess = tf.Session()
with sess.as_default():   # or `with sess:` to close on exit
    assert sess is tf.get_default_session()
    assert t.eval() == sess.run(t)

その中で最も主要な違いはsessを使用できることです.run()は、同じステップで複数のtensorの値を取得します.たとえば、次のようにします.
t = tf.constant(42.0)
u = tf.constant(37.0)
tu = tf.mul(t, u)
ut = tf.mul(u, t)
with sess.as_default():
   tu.eval()  # runs one step
   ut.eval()  # runs one step
   sess.run([tu, ut])  # evaluates both tensors in a single step

なお、evalとrunを用いるたびに計算図全体が実行され、計算結果を得るためにtfに割り当てる.Variableを取得します.