初めに
この記事は 2017/11/11 に開催の「機械学習 名古屋 第13回勉強会 【TensorBoardを使ったハンズオン】」のための解説ページです。
TensorBoard とは?
-
TensorBoard: Visualizing Learning | TensorFlow
- TensorFlow と連携する、各種データの可視化ツール。
- TensorFlow v1.3.0 から、別パッケージになった(
pip install tensorflow-tensorboard
)- TensorFlow を pip 等でインストールすれば、依存関係で一緒にインストールされる。
ハンズオン環境
以下の環境を前提とします:
- Python 2.7.x / 3.x (3.5 以上を推奨)
- TensorFlow v1.3.0 / v1.4.0
- それ以前のバージョンでもおそらく動作しますが、できる限り最新のTensorFlowをご用意ください。
- TensorBoard v0.1.8 以上
- それ以前のバージョンでもおそらく動作しますが、できる限り最新のTensorBoardをご用意ください。
- numpy v0.11.x 以上
- matplotlib v2.0.x 以上
- Jupyter Notebook (オプション)
お使いのPC環境にて、そのままインストール、もしくは Docker イメージ(後述)を pull するなどしてご準備ください。(Python や TensorFlow その他のパッケージのインストール方法は割愛します)
Docker イメージ
これらの環境構築済の Docker イメージ を用意しました。
Docker がインストールされていて利用できる(したい)ときは、docker pull antimon2/mln201711
してご利用ください。
ハンズオン0:前準備
今回のハンズオンで使用する各種スクリプト・Jupyter notebook ファイル等をまとめた 勉強会用Gitリポジトリ を用意してあります。
以下のコマンドに従って、適当なディレクトリ(フォルダ)に clone してください1:
git clone https://github.com/antimon2/MLN_201711
clone したリポジトリのディレクトリに cd すると、そこに docker run ~
する各種スクリプトを用意してあるので、Linux/macOS の場合は ~.sh
を、Windows の場合は ~.bat
をそれぞれ実行すればOK。カレントディレクトリ配下のディレクトリをマウントして Dockerコンテナ を実行するようになっています。Dokcerイメージを利用しない場合のコマンドも、この記事で随時解説していきます。
まずは、Jupyter notebook を起動します。
Docker イメージを利用する場合、以下のコマンドを実行してください(Linux/macOS の場合):
./docker.run.jupyter.sh
(Windows の場合)2:
.\docker.run.jupyter.bat
Docker イメージを利用せず、PCに構築した環境に Jupyter がインストールされている場合、以下のコマンドを実行してください:
jupyter notebook --notebook-dir notebooks
その後ブラウザで http://localhost:8888
にアクセスすると3、Jupyter notebook の画面が現れます。
以降、Jupyter notebook を利用する前提で進めていきます4。
ハンズオン1: Histogram Dashboard
この節は、公式チュートリアルの TensorBoard Histogram Dashboard に従って、とにかくヒストグラムを体感しよう、という内容です。
1-1. スクリプトの実行
Jupyter notebook のファイル一覧に表示されている Histogram_Sample.ipynb を開いて、各セルを上から順に実行してください。
1-2. TensorBoard 起動・確認
Docker イメージを利用している場合は、以下のコマンドを実行してください(Linux/macOS の場合):
./docker.run.tensorboard.histogram_demo.sh
Docker イメージを利用していない場合は、以下の要領でコマンドを実行してください5:
tensorboard --logdir notebooks/histgram_demo
その後、ブラウザで http://localhost:6006
を開いてください。
以下のようなページが表示されたら成功です:
※各タブ・各グラフの詳解はハンズオンにて実施します(予定)
一通り操作・閲覧が終わったら、ブラウザのページを閉じて、TensorBoard を終了してください。終了するには、TensorBoard を起動したターミナル上で Ctrl+C キーを押せばOK。
ハンズオン2: MNIST Sample
この節は、TensorFlow の学習サンプルである MNIST を題材に利用して、実際の学習に TensorBoard の各種サマリ書き込み処理を埋め込む方法とその結果を体感していただきます。
2-1. スクリプトの実行
Jupyter notebook のファイル一覧に表示されている MNIST_Sample.ipynb を開いて、各セルを上から順に実行してください。
※各セル・各コードの詳解はハンズオンにて実施します(予定)
※時間が余ったら、Constants セルの定数値をいろいろ差し替えて試してみましょう(TO_EMBED_COUNT
は最大 10000
まで、max_steps
は 5000
~20000
程度が適当でしょう。また log_dir
は適宜変更するようにしましょう)。
2-2. TensorBoard 起動・確認
Docker イメージを利用している場合は、以下のコマンドを実行してください(Linux/macOS の場合):
./docker.run.tensorboard.mnist_sample.sh
Docker イメージを利用していない場合は、以下の要領でコマンドを実行してください5:
tensorboard --logdir notebooks/mnist_sample
その後、ブラウザで http://localhost:6006
を開いてください。
以下のようなページが表示されたら成功です:
※各タブ・各グラフの詳解はハンズオンにて実施します(予定)
一通り操作・閲覧が終わったら、ブラウザのページを閉じて、TensorBoard を終了してください。終了するには、TensorBoard を起動したターミナル上で Ctrl+C キーを押せばOK。
Q&A
想定される(もしくは実際にあった)問題とそれに対する回答を記しておきます。
- Q. Jupyter を起動した(つもり)が、ブラウザで
http://localhost:8888
を開いても何も表示されない。- A. いくつか理由が考えられます:
- A1. コマンドを実行した後、ターミナル(コマンドプロンプト等)を閉じていませんか?
Jupyter を動作したままにしておくために、ターミナル(コマンドプロンプト)を開いたままにしておいてください(最小化しておくのはOK)。 - A2. Docker Toolbox を利用している場合、localhost の代わりに Docker Machine に割り当てられたIPアドレスを指定する必要が(たぶん)あります(例:
http://192.168.99.100:8888/
) - A3. すでに別のアプリケーション等でポート 8888 が使用されている場合、エラーとなります。その際は、スクリプトファイルを修正するなどしてポート番号を変更してください。例えば
docker.run.jupyter.sh
で8080
番ポートを利用するには-p 8888:8888
となっている箇所を-p 8080:8888
とすればOKです、その後docker.run.jupyter.sh
実行→http://localhost:8080
にアクセスすればOK。
- A1. コマンドを実行した後、ターミナル(コマンドプロンプト等)を閉じていませんか?
- A. いくつか理由が考えられます:
- Q. TensorBoard を起動した(つもり)が、ブラウザで
http://localhost:6006
を開いても何も表示されない。- A. いくつか理由が考えられます。
まず、Jupyter 起動時と同様「A1. ターミナルは閉じていないか」「A2. Docker Toolbox 利用していないか」「A3. 他のアプリとポート番号かぶっていないか」をチェックしてください。- A4. 最初は起動して表示できたのに、2回目に起動に失敗(例:Histogram Demo OK → MNIST Sample NG)する場合。前回起動した TensorBoard が正常に終了していない可能性があります。
プロセスを確認して、以前起動した TensorBoard が起動したままになっていたら、適切に終了 or 強制終了してください。
Docker イメージを利用している場合は、docker ps
で稼働しているコンテナを確認して、docker kill 《終了したいコンテナのID》
で強制終了できます。
- A4. 最初は起動して表示できたのに、2回目に起動に失敗(例:Histogram Demo OK → MNIST Sample NG)する場合。前回起動した TensorBoard が正常に終了していない可能性があります。
- A. いくつか理由が考えられます。
-
git が利用できない場合、GitHub のリポジトリURL https://github.com/antimon2/MLN_201711 にブラウザでアクセスして、「Clone or download」→「Download ZIP」 で
.zip
ファイルをダウンロードして展開してもOKです。 ↩ -
Windows 用のコマンドは、基本的に Linux/macOS 用のコマンドの最後を
.bat
に変更したものが対応しています。以降は Windows 用のコマンドを省きます。 ↩ -
Docker イメージを利用せず
jupyter
コマンドを実行した場合には、自動的にデフォルトブラウザが起動してhttp://localhost:8888
を開いてくれる場合があります。 ↩ -
Jupyter を利用しない(できない)場合、例えば各
.ipynb
ファイルごとに、各セルをまとめて1つの.py
ファイルにして、それを実行すればおそらく動作すると思われます。また iPython や標準の REPL を起動して、各セルを一つずつコピペして実行しても良いでしょう。 ↩ -
Docker イメージを利用せず独自の環境でハンズオンを進めている場合、logdir が別のディレクトリになる場合があります。適宜確認して正しいディレクトリを指定するようにしてください。 ↩ ↩2