私は強化学習アルゴリズムからいくつかのコードを理解しようとしています。そのためにテンソルの値を出力しようとしています。
簡単なコードを作成して、私が何を意味するかを示しました。
import tensorflow as tf
from keras import backend as K
x = K.abs(-2.0)
tf.Print(x,[x], 'x')
目標は、値「2」を印刷することです(-2の絶対値)。しかし、私は次のものだけを返します:
Using TensorFlow backend.
Process finished with exit code 0
何もないのですが、print( '...')ステートメントと同じように値「2」を出力するにはどうすればよいですか?
Jupyter Notebookを使用している場合、これまでのtf.Print()
は互換性がなく、 docs で説明されているように、出力をNotebookのサーバー出力に出力します。
Tensorflowのドキュメントでは、Tensorsの記述方法は次のとおりです。
TensorFlowプログラムを作成する場合、操作して渡す主なオブジェクトはtf.Tensorです。 tf.Tensorオブジェクトは、最終的に値を生成する部分的に定義された計算を表します。
したがって、それらをtf.Session()
で初期化して値を取得する必要があります。値を出力するには、eval()
必要なコードは次のとおりです。
import tensorflow as tf
from keras import backend as K
x= K.abs(-2.0)
with tf.Session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
print(x.eval())
初期化子は実際にxを初期化するために重要です。
学習目的で、熱心な実行をオンにすると便利な場合があります。積極的実行が有効になっていると、TensorFlowはすぐに操作を実行します。次に、単にprintまたはtensorflow.print()を使用して、オブジェクトの値を出力できます。
import tensorflow as tf
from keras import backend as K
tf.compat.v1.enable_eager_execution() # enable eager execution
x = K.abs(-2.0)
tf.Print(x,[x], 'x')
詳細はこちらをご覧ください。 https://www.tensorflow.org/api_docs/python/tf/compat/v1/enable_eager_execution
TF 2.0以降でテンソルを印刷するには
_my_sample = tf.constant([[3,5,2,6], [2,8,3,1], [7,2,8,3]])
_
Session.run()を使用with tf.compat.v1.Session() as ses: print(ses.run(my_sample))
Eval()を含む1行print(tf.keras.backend.eval(my_sample))