LoginSignup

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

#機械学習名古屋 勉強会#13 ハンズオン資料

Last updated at Posted at 2017-11-08

初めに

この記事は 2017/11/11 に開催の「機械学習 名古屋 第13回勉強会 【TensorBoardを使ったハンズオン】」のための解説ページです。

TensorBoard とは?

  • TensorBoard: Visualizing Learning | TensorFlow
    TensorBoard イメージ
  • 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 の画面が現れます。

MLN201711_home.png

以降、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 を開いてください。
以下のようなページが表示されたら成功です:

MLN201711_tb_histo1.png
(DISTRIBUTIONS タブの表示例)

MLN201711_tb_histo2.png
(HISTOGRAMS タブの表示例)

※各タブ・各グラフの詳解はハンズオンにて実施します(予定)

一通り操作・閲覧が終わったら、ブラウザのページを閉じて、TensorBoard を終了してください。終了するには、TensorBoard を起動したターミナル上で Ctrl+C キーを押せばOK。

ハンズオン2: MNIST Sample

この節は、TensorFlow の学習サンプルである MNIST を題材に利用して、実際の学習に TensorBoard の各種サマリ書き込み処理を埋め込む方法とその結果を体感していただきます。

2-1. スクリプトの実行

Jupyter notebook のファイル一覧に表示されている MNIST_Sample.ipynb を開いて、各セルを上から順に実行してください。

※各セル・各コードの詳解はハンズオンにて実施します(予定)

※時間が余ったら、Constants セルの定数値をいろいろ差し替えて試してみましょう(TO_EMBED_COUNT は最大 10000 まで、max_steps500020000 程度が適当でしょう。また log_dir は適宜変更するようにしましょう)。

2-2. TensorBoard 起動・確認

Docker イメージを利用している場合は、以下のコマンドを実行してください(Linux/macOS の場合):

./docker.run.tensorboard.mnist_sample.sh

Docker イメージを利用していない場合は、以下の要領でコマンドを実行してください5

tensorboard --logdir notebooks/mnist_sample

その後、ブラウザで http://localhost:6006 を開いてください。
以下のようなページが表示されたら成功です:

MLN201711_tb_mnist1.png
(SCALARS タブの表示例)

MLN201711_tb_mnist2.png
(PROJECTOR タブ)

※各タブ・各グラフの詳解はハンズオンにて実施します(予定)

一通り操作・閲覧が終わったら、ブラウザのページを閉じて、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.sh8080 番ポートを利用するには -p 8888:8888 となっている箇所を -p 8080:8888 とすればOKです、その後 docker.run.jupyter.sh 実行→http://localhost:8080 にアクセスすればOK。
  • 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》 で強制終了できます。

  1. git が利用できない場合、GitHub のリポジトリURL https://github.com/antimon2/MLN_201711 にブラウザでアクセスして、「Clone or download」→「Download ZIP」 で .zip ファイルをダウンロードして展開してもOKです。 

  2. Windows 用のコマンドは、基本的に Linux/macOS 用のコマンドの最後を .bat に変更したものが対応しています。以降は Windows 用のコマンドを省きます。 

  3. Docker イメージを利用せず jupyter コマンドを実行した場合には、自動的にデフォルトブラウザが起動して http://localhost:8888 を開いてくれる場合があります。 

  4. Jupyter を利用しない(できない)場合、例えば各 .ipynb ファイルごとに、各セルをまとめて1つの .py ファイルにして、それを実行すればおそらく動作すると思われます。また iPython や標準の REPL を起動して、各セルを一つずつコピペして実行しても良いでしょう。 

  5. Docker イメージを利用せず独自の環境でハンズオンを進めている場合、logdir が別のディレクトリになる場合があります。適宜確認して正しいディレクトリを指定するようにしてください。 

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up