テンソルフローとテンソルボードの使い方を学ぼうとしています。MNIST ニューラル ネット チュートリアルに基づくテスト プロジェクトがあります。
私のコードでは、次のように、正しく分類されたデータ セット内の数字の割合を計算するノードを作成します。
correct = tf.nn.in_top_k(self._logits, labels, 1)
correct = tf.to_float(correct)
accuracy = tf.reduce_mean(correct)
ここで、self._logits
はグラフの推論部分でありlabels
、正しいラベルを含むプレースホルダーです。
ここで、トレーニングが進むにつれて、トレーニング セットと検証セットの両方の精度を評価したいと思います。これを行うには、異なる feed_dicts を使用して精度ノードを 2 回実行します。
train_acc = tf.run(accuracy, feed_dict={images : training_set.images, labels : training_set.labels})
valid_acc = tf.run(accuracy, feed_dict={images : validation_set.images, labels : validation_set.labels})
これは意図したとおりに機能します。値を出力すると、最初は 2 つの精度が両方とも増加し、最終的には検証の精度が横ばいになり、トレーニングの精度が向上し続けることがわかります。
ただし、テンソルボードでこれらの値のグラフも取得したいのですが、これを行う方法がわかりません。に を追加するだけscalar_summary
でaccuracy
は、ログに記録された値はトレーニング セットと検証セットを区別しません。
また、名前の異なる 2 つの同一のaccuracy
ノードを作成し、1 つをトレーニング セットで、もう 1 つを検証セットで実行してみました。次にscalar_summary
、これらの各ノードに a を追加します。これにより、テンソルボードに 2 つのグラフが表示されますが、トレーニング セットの精度を示す 1 つのグラフと検証セットの精度を示す 1 つのグラフではなく、どちらも端末に出力された値と一致しない同一の値を示しています。
私はおそらくこの問題を解決する方法を誤解しています。異なる入力に対して単一ノードからの出力を別々にログに記録する推奨される方法は何ですか?