- 投稿日:2019-03-05T23:59:49+09:00
Tensorboardの使い方まとめ
TensorFlow
Tensorboadと直接関係のあるTensorflowの全体像は以下。
起動方法
JupyterNoteBook起動
起動コマンド
kannkyo/jupyter.shcd ~/ docker run --runtime=nvidia -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 -p 6006:6006 tensorflow/tensorflow:1.12.0-gpu-py3from https://gist.github.com/kannkyo/8626729f0453b562146d17c25acdbaf9
画面確認
Tensorboard起動
起動要件
- ブラウザ:Google Chrome or Firefox
起動コマンド
Jupyternotebookで New > Terminalを選択。Terminalで以下のコマンドを実行。
kannkyo/tensorboard.shtensorboard --logdir ./logs
from https://gist.github.com/kannkyo/03281eab59e3cca7a471727cae3543f1
画面確認
Tensorboardのキーコンセプト
TensorFlowデータ収集方式
audio
audiotf.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
histogramtf.summary.histogram( name, values, collections=None, family=None )from https://www.tensorflow.org/versions/r1.12/api_docs/python/tf/summary/histogram
image
imagetf.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
scalartf.summary.scalar( name, tensor, collections=None, family=None )from https://www.tensorflow.org/versions/r1.12/api_docs/python/tf/summary/scalar
text
texttf.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
Histogram
Embedding Projector
手順
- TensorBoard Dev Summit Tutorialのソースコードのパス名を logsに変更。
- jupyter note bookで実行。
変更点import os import os.path import shutil import tensorflow as tf - LOGDIR = "/tmp/mnist_tutorial/" + LOGDIR = "./logs"実行結果
Projector
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)実行結果
Distribution
Graphs
Histogram
Images
Scalar
参考文献