ネットワークのフォワードパスを通じて、特定のtf.variableがとる値をログに記録したいと考えました。これを行う簡単な方法はありますか?
回答:
回答№1は1TensorFlowでデータを記録またはデバッグする方法はいくつかあります。
最も簡単なのは、セッションで実行するか、評価することです。例えば
import tensorflow as tf
sess = tf.InteractiveSession()
v = tf.Variable([0.0])
# you can do other graph things here.
print sess.run(v)
# alternatively
print v.eval()
多くの場合、これは不可能であるため、別のアプローチとして、グラフにtf.Print opsを配置する方法があります。変数を使用するたびに変数を印刷する方法を次に示します。
import tensorflow as tf
v = tf.Variable([0.0], name="the_var")
v = tf.Print(v, [v], "the_var = ")
# ... do things with "v" as if it was the variable op
ザ tf.Print opは、大きなテンソルがある場合に最初のいくつかのエントリのみを出力します。そのため、ドキュメントを確認してください。 summarize
そして first_n
ログに記録する量を制御するパラメーター。
TensorBoardを使用して、グラフの実行中に変数の概要を記録することもできます。 「まだ使用していない場合は、 見てみな、TensorFlow内の高レベルAPIの多く実行中のモデル変数に関する多くの情報をTensorBoardに既に記録しています。 TensorBoardで独自のロギングを実行するには、次のようなものを使用します tf.summary.scalar または tf.summary.histogram.
v = tf.Variable([0.0])
# this will log to the "distributions" tab in tensorboard too
tf.summary.scalar(v)
tf.summary.histogram(v)
実行中にこれらの概要をディスクに保存する方法の詳細については、ドキュメントをご覧ください。 https://www.tensorflow.org/get_started/summaries_and_tensorboard.
そして最後に、 "TensorFlowで利用可能なデバッガがあります。 tfdbg、グラフの実行をステップ実行し、テンソルの内容をダンプするために使用できます。
回答№2の場合は0
テンソルフロー変数がとる各ステップで値をデバッグできます。