のTensorFlowtf.Session()とtf.InteractiveSession()の違い
Difference Tensorflow Tf
公式チュートリアルは次のとおりです。
通常のセッションとの唯一の違いは、InteractiveSessionが構築時にデフォルトセッションとしてそれ自体をインストールすることです。 Tensor.eval()メソッドとOperation.run()メソッドは、そのセッションを使用してopsを実行します。
翻訳とは:tf.InteractiveSession()はインタラクティブセッションモードであり、デフォルトのセッションにすることができます。つまり、ユーザーはセッションが実行されている状況を次のように指定する必要はありません。 、これがデフォルトのメリットです。 run()およびeval()関数は、セッションを示していない可能性があります。
比較:
import tensorflow as tf import numpy as np a=tf.constant([[1., 2., 3.],[4., 5., 6.]]) b=np.float32(np.random.randn(3,2)) c=tf.matmul(a,b) init=tf.global_variables_initializer() sess=tf.Session() print (c.eval())
上記のコードは間違ってコンパイルされています。次のようなエラーが表示されます。
ValueError:eval()
を使用してテンソルを評価できません:デフォルトセッションが登録されていません。 with sess.as_default()
を使用しますまたは、明示的なセッションをeval(session=sess)
に渡します
import tensorflow as tf import numpy as np a=tf.constant([[1., 2., 3.],[4., 5., 6.]]) b=np.float32(np.random.randn(3,2)) c=tf.matmul(a,b) init=tf.global_variables_initializer() sess=tf.InteractiveSession() print (c.eval())
そして、InteractiveSession()がうまくいかない場合、InteractiveSession()は明らかに次と同等です。
sess=tf.Session() with sess.as_default():
つまり、sess = tf.Session()関数が必要な場合は、上記のsess.as_default()を使用したメソッドです。別のメソッドは次のとおりです。
sess=tf.Session() print (c.eval(session=sess))
実際、次のような方法もあります。
import tensorflow as tf import numpy as np a=tf.constant([[1., 2., 3.],[4., 5., 6.]]) b=np.float32(np.random.randn(3,2)) c=tf.matmul(a,b) init=tf.global_variables_initializer() with tf.Session() as sess: #print (sess.run(c)) print(c.eval())
概要:tf.InteractiveSession()は、操作されるデフォルトのユーザーセッションであり、tf.Session()にはデフォルトではないため、計算を開始するときにeval()を使用してセッションを指定する必要があります。
参照ウェブサイト:
- https://www.cnblogs.com/cvtoEyes/p/9035047.html
- https://blog.csdn.net/qq_14839543/article/details/77822916
- https://www.cnblogs.com/wuzhitj/p/6648610.html
- https://blog.csdn.net/zhuiyuanzhongjia/article/details/80463237
- https://blog.csdn.net/cocoaqin/article/details/79180277
- https://www.jianshu.com/p/6766fbcd43b9