😀

Tensorboardの使い方まとめ

2019/03/05に公開

TensorFlow

Tensorboadと直接関係のあるTensorflowの全体像は以下。

起動方法

JupyterNoteBook起動

起動コマンド

kannkyo/jupyter.sh
cd ~/
docker run --runtime=nvidia -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 -p 6006:6006 tensorflow/tensorflow:1.12.0-gpu-py3

from https://gist.github.com/kannkyo/8626729f0453b562146d17c25acdbaf9

画面確認

http://localhost:8888

Tensorboard起動

起動要件

  • ブラウザ:Google Chrome or Firefox

起動コマンド

Jupyternotebookで New > Terminalを選択。Terminalで以下のコマンドを実行。

kannkyo/tensorboard.sh
tensorboard --logdir ./logs

from https://gist.github.com/kannkyo/03281eab59e3cca7a471727cae3543f1

画面確認

http://localhost:6006/

Tensorboardのキーコンセプト

TensorFlowデータ収集方式

audio

audio
tf.summary.audio(
    name,
    tensor,
    sample_rate,
    max_outputs=3,
    collections=None,
    family=None
)

from https://www.tensorflow.org/versions/r1.12/api_docs/python/tf/summary/audio

histogram

histogram
tf.summary.histogram(
    name,
    values,
    collections=None,
    family=None
)

from https://www.tensorflow.org/versions/r1.12/api_docs/python/tf/summary/histogram

image

image
tf.summary.image(
    name,
    tensor,
    max_outputs=3,
    collections=None,
    family=None
)

from https://www.tensorflow.org/versions/r1.12/api_docs/python/tf/summary/image

scalar

scalar
tf.summary.scalar(
    name,
    tensor,
    collections=None,
    family=None
)

from https://www.tensorflow.org/versions/r1.12/api_docs/python/tf/summary/scalar

text

text
tf.summary.text(
    name,
    tensor,
    collections=None
)

from https://www.tensorflow.org/versions/r1.12/api_docs/python/tf/summary/text

データ名のタグ付け方式

tag名は directory/like/hierarchy のように与える。 scalar と histogram ダッシュボードはtag名でグルーピングされる。

データロード方式

  • logdirで知られる特定のディレクトリに、TensorFlowから取得したサマリのデータを書き込む。
  • ファイル名がtfeventsで始まるファイルに追記モードでダンプする。
  • TensorBoardはlogdir内の全データを読み込む。処理を中断した場合を考えて自動的に全ファイル読み込むらしい。

モデルの実行結果比較方式

複数のTensorflowの実行結果を比較できる。

1つのディレクトリのサブディレクトリに格納
tensorboard --logdir /some/path/mnist_experiments
2つのディレクトリに別々に格納
tensorboard --logdir name1:/path/to/logs/1,name2:/path/to/logs/2

可視化

Scalar Dashboard

  • 統計スカラー量の時間変化を可視化する。

Histogram Dashboard

  • tf.summary.histogramを通じて統計分布の時間変化を可視化する。

Distribution Dashboard

  • tf.summary.histogramを通じて可視化するもう一つの方法。高レベルな統計を表示する。
  • 9本の折れ線が描かれていて、それぞれ[maximum, 93%, 84%, 69%, 50%, 31%, 16%, 7%, minimum]を意味する。
  • 折れ線が境目になっている3色の領域があり、これは内側から[σ, 2σ, 3σ]の幅を意味する。
  • チュートリアル 参照。

Image Dashboard

  • tf.summary.imageを通じてPNG画像を可視化する。
  • 行がtagに対応し、列がrunの実行に対応する。
  • 各tagの最新画像を表示する。

Audio Dashboard

  • tf.summary.audioを通じてplayable audio widgetsを表示する。
  • 行がtagに対応し、列がrunの実行に対応する。
  • 各tagの最新オーディオを表示する。

Graph Explorer

  • TensorFlowモデルの検査を可能にするグラフ図。

Embedding Projector

Text Dashboard

  • tf.summary.textを通じてテキストを表示する。
  • ハイパーリンク、リスト及び表を含むMarkdownをサポートする。

サンプル

Histogram & Distribution Dashboard

手順

  • チュートリアルのソースコードのパス名を logsに変更。
  • jupyter note bookで実行。
変更点
# Setup a session and summary writer
sess = tf.Session()
- writer = tf.summary.FileWriter("/tmp/histogram_example")
+ writer = tf.summary.FileWriter("./logs")

実行結果

Distribution

Distribution.png

Histogram

Histogram.png

Embedding Projector

手順

変更点
import os
import os.path
import shutil
import tensorflow as tf

- LOGDIR = "/tmp/mnist_tutorial/"
+ LOGDIR = "./logs"

実行結果

Projector

Projector.png

Some Dashboard & Graph Explorer

手順

  • MNISTを用いたScalar & Image & Histogram & Distribution DashboardとGraph Explorerの例。
  • mnist_with_summaries.pyのログディレクトリを変更。
  • jupyter note bookで実行。
変更点
  parser.add_argument(
      '--log_dir',
      type=str,
+     default=os.path.join('./logs'),
-     default=os.path.join(os.getenv('TEST_TMPDIR', '/tmp'),
-                           'tensorflow/mnist/logs/mnist_with_summaries'),
      help='Summaries log directory')
  FLAGS, unparsed = parser.parse_known_args()
  tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)

friom https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py

実行結果

Distribution

Distribution.png

Graphs

Graphs.png

Histogram

Histogram.png

Images

Images.png

Scalar

Scalar.png

参考文献

Discussion