TensorBoardでTensorFlowの数値計算を可視化する

こんにちは。GMOアドマーケティングのT.Iです。
機械学習のブームとともにChainerやCNTK, Theanoといった、ディープラーニング・機械学習に関するライブラリが数多く登場しています。
今回はその機械学習(数値計算)ライブラリの一つである「TensorFlow」の環境構築と、その可視化ツールである「TensorBoard」について紹介します。

TensorFlowとTensorBoard

TensorFlowはGoogle社が提供する機械学習(数値計算)のためのライブラリです。
2015年11月にオープンソースとして公開され、現在では数多くの企業でTensorFlowが活用されています。(公式サイト上にCompanies using TensorFlowとしていくつかの企業が紹介されています)
そのTensorFlowの特徴の一つに、TensorBoardによる強力な可視化機能があります。
では早速、TensorFlowの環境構築とTensorBoardによる可視化を試してみます。

TensorFlowの導入

TensorFlowのインストール方法はいくつかありますが、今回は検証なのでローカルマシンのMac上にDockerで環境を作ってみます。

なお、Dockerは Docker for Mac で導入しました。

TensorFlowは公式のDockerイメージが公開されているので、まずはDockerイメージを入手します。

特にタグを指定しない場合、 CPU onlyのTensorFlowが選択されます。

問題なくpullできました。

GPU対応版のTensorFlowを導入したい場合は以下のようにタグを付与してみて下さい。

 

続いてコンテナを起動します。

このあとTensorBoardへ接続するためにローカルマシンから localhost:6006 へアクセスする必要があるため、オプションでポートを公開しています。

ログインできたので、まずはPythonとTensorFlowのバージョンを確認してみます。

Python :2.7.12、TensorFlow :1.3.0 がインストールされました。

同時にTensorBoardも導入されていることが確認できます。

 

TensorBoardで可視化する

まず初めに、GitHubで公開されているTensorFlowのサンプルコードを動かしてみます。

無事に動作しましたが、これだけでは面白くないのでTensorBoardで計算過程を可視化してみましょう。

TensorBoardを動作させるために少しコードを修正します。

tf.summary.FileWriter でTensorBoardで表示するための計算グラフイメージをイベントファイルに書き込んでいます。

上記のコードを実行すると、実行したディレクトリ上に「data」というディレクトリが作成されるので、作成されたディレクトリを以下のように指定・実行し、ローカルマシンから localhost:6006 へアクセスしてみましょう。

localhost:6006 へアクセスすると、TensorBoardの画面が表示されます。

「GRAPHS」のタブへ移動すると、上記計算の計算グラフが確認でき、それぞれの要素を選択することでさらに詳細の情報を表示することが可能です。

 

さらに複雑な計算グラフを可視化するため、MNISTデータセット(手書き数字の画像セット)のチュートリアルであるMNIST For ML BeginnersをTensorBoardで可視化してみます。

サンプルのソースコードに対して先程のように tf.summary.FileWriter を追加し、計算グラフをよりわかりやすくするため、以下のように変数・プレースホルダーの名前付けを行っています。

可視化したものはこちらになります。

入力に対して重みやバイアスがどのように働いているのかが確認することが出来ます。

 

それぞれのシンボルについては公式ページで詳細に解説されているので、ぜひ参考にしてみて下さい。

さいごに

今回はDockerを使ったTensorFlowの環境構築と、TensorFlowの可視化ツールである「TensorBoard」について紹介しました。

今回は計算グラフの可視化のみの紹介でしたが、TensorBoardには画像や学習過程の可視化など様々な機能があるので、興味のある方はぜひ試してみて下さい。

「とりあえず全部試してみたい!」という方はこちらの公式チュートリアルも参考にしてみて下さい。