web-dev-qa-db-ja.com

Tensorboardを使用して複数のグラフを1つのプロットにプロットする

TensorflowバックエンドでKerasを使用しています。私の仕事では、Inception、VGG、Resnetなどのいくつかのモデルのパフォーマンスをデータセットで比較します。複数のモデルのトレーニング精度を1つのグラフにプロットしたいと思います。 Tensorboardでこれを実行しようとしていますが、機能していません。

Tensorboardを使用して1つのプロットに複数のグラフをプロットする方法はありますか、これを行うことができる他の方法はありますか?

ありがとうございました

11
Kavitha Devan
  • 損失と検証の精度のようなスカラーを確実にプロットできます:tf.summary.scalar("loss", cost)ここで、costはテンソルです
  • ここで、すべての値をプロットするための要約を作成してから、これらの要約をすべて単一の要約にマージすることができます。merged_summary_op = tf.summary.merge_all()
  • 次のステップは、summary = sess.run(merged_summary_op)によってセッションでこの要約を実行することです
  • _merged_summary_op_を実行した後、summary_writerを使用して要約を作成する必要があります:summary_writer.add_summary(summary, Epoch_number) where summary_writer = tf.summary.FileWriter(logs_path, graph=tf.get_default_graph())
  • ターミナルまたはcmdを開き、次のコマンドを実行します。「コマンド_tensorboard --logdir="logpath"_を実行します
  • 次に、Webブラウザで http://0.0.0.0:6006/ を開きます
  • 次のリンクを参照できます。 https://github.com/jayshah19949596/Tensorboard-Visualization-Freezing-Graph
  • プロットできる他のものは、重み、入力です
  • テンソルボードに画像を表示することもできます
  • Tensorflow 1.5でkerasを使用している場合、tensorflow 1.5ではkerasが公式の高レベルAPIとして含まれているため、テンソルボードの使用は簡単だと思います
  • 異なるログパスを持つ異なるFileWriterインスタンスを使用することで、異なるハイパーパラメーターを持つ同じモデルの同じグラフに異なる精度をプロットできると確信しています
  • 以下の画像を確認してください: enter image description here
  • 同じグラフに異なるモデルの異なる精度をプロットできるかどうかはわかりません...しかし、それを行うプログラムを書くことができます
  • さまざまなモデルの要約情報をさまざまなディレクトリに書き込み、テンソルボードを親ディレクトリにポイントして、@ RobertLuggのコメントで示唆されているように、同じグラフにさまざまなモデルの精度をプロットすることができます

==================== UPDATED =================

異なるモデルの精度と損失を異なるディレクトリに保存してから、テンソルボードが親ディレクトリを指すようにすると、同じグラフで異なるモデルの結果が得られます。私はこれを自分で試しましたが、うまくいきます。

3
Jai

各実行をメインフォルダーの下の異なるフォルダーに保存し、メインフォルダーでテンソルボードを開くだけです。

for i in range(x):
    tensorboard = TensorBoard(log_dir='./logs/' + 'run' + str(i), histogram_freq=0,
                                     write_graph=True, write_images=False)

    model.fit(X, Y, epochs=150, batch_size=10, callbacks=[tensorboard])

ターミナルから、テンソルボードを次のように実行します:

tensorboard --logdir=logs
2

TensorboardXまたはpytorch 1.2の SummaryWriter を使用している場合、 add_scalars というメソッドがあります。

次のように呼び出します。

my_summary_writer.add_scalars(f'loss/check_info', {
    'score': score[iteration],
    'score_nf': score_nf[iteration],
}, iteration)

そして、次のように表示されます。

tensorboard image


add_scalarsは、実行の編成を台無しにします。このリストに複数のエントリを追加します(したがって、混乱が生じます)。

tensorboard image

代わりに次のことを行うことをお勧めします。

my_summary_writer.add_scalar(f'check_info/score',    score[iter],    iter)
my_summary_writer.add_scalar(f'check_info/score_nf', score_nf[iter], iter)
1