😀
Tensorboardの使い方まとめ
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
画面確認
Tensorboard起動
起動要件
- ブラウザ:Google Chrome or Firefox
起動コマンド
Jupyternotebookで New > Terminalを選択。Terminalで以下のコマンドを実行。
kannkyo/tensorboard.sh
tensorboard --logdir ./logs
from https://gist.github.com/kannkyo/03281eab59e3cca7a471727cae3543f1
画面確認
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
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)
Discussion