TensorFlowとTensorBoard
TensorFlowの導入
TensorFlowのインストール方法はいくつかありますが、今回は検証なのでローカルマシンのMac上にDockerで環境を作ってみます。
なお、Dockerは Docker for Mac で導入しました。
TensorFlowは公式のDockerイメージが公開されているので、まずはDockerイメージを入手します。
特にタグを指定しない場合、 CPU onlyのTensorFlowが選択されます。
1 2 3 4 5 6 7 |
$ docker pull gcr.io/tensorflow/tensorflow ... ... ... $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE gcr.io/tensorflow/tensorflow latest 1bb38d61d261 13 days ago 1.21GB |
問題なくpullできました。
GPU対応版のTensorFlowを導入したい場合は以下のようにタグを付与してみて下さい。
1 |
$ docker pull gcr.io/tensorflow/tensorflow:latest-gpu |
続いてコンテナを起動します。
このあとTensorBoardへ接続するためにローカルマシンから localhost:6006
へアクセスする必要があるため、オプションでポートを公開しています。
1 |
$ docker run -it -p 6006:6006 gcr.io/tensorflow/tensorflow /bin/bash |
ログインできたので、まずはPythonとTensorFlowのバージョンを確認してみます。
1 2 3 4 5 6 7 |
root@〜:/notebooks# python Python 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf >>> tf.__version__ '1.3.0' |
Python :2.7.12、TensorFlow :1.3.0 がインストールされました。
同時にTensorBoardも導入されていることが確認できます。
1 2 3 |
root@〜:/notebooks# pip list | grep tensorflow tensorflow (1.3.0) tensorflow-tensorboard (0.1.2) |
TensorBoardで可視化する
まず初めに、GitHubで公開されているTensorFlowのサンプルコードを動かしてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
root@〜:/notebooks# python Python 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf >>> hello = tf.constant('Hello, TensorFlow!') >>> sess = tf.Session() >>> sess.run(hello) 'Hello, TensorFlow!' >>> a = tf.constant(10) >>> b = tf.constant(32) >>> sess.run(a+b) 42 |
無事に動作しましたが、これだけでは面白くないのでTensorBoardで計算過程を可視化してみましょう。
TensorBoardを動作させるために少しコードを修正します。
1 2 3 4 5 6 7 8 |
import tensorflow as tf a = tf.constant(10, name='a') b = tf.constant(32, name='b') with tf.Session() as sess: sess.run(tf.global_variables_initializer()) sess.run(a + b) summary_writer = tf.summary.FileWriter('data', graph=sess.graph) |
tf.summary.FileWriter
でTensorBoardで表示するための計算グラフイメージをイベントファイルに書き込んでいます。
上記のコードを実行すると、実行したディレクトリ上に「data」というディレクトリが作成されるので、作成されたディレクトリを以下のように指定・実行し、ローカルマシンから localhost:6006
へアクセスしてみましょう。
1 |
tensorboard --logdir=data |
localhost:6006
へアクセスすると、TensorBoardの画面が表示されます。
「GRAPHS」のタブへ移動すると、上記計算の計算グラフが確認でき、それぞれの要素を選択することでさらに詳細の情報を表示することが可能です。
さらに複雑な計算グラフを可視化するため、MNISTデータセット(手書き数字の画像セット)のチュートリアルであるMNIST For ML BeginnersをTensorBoardで可視化してみます。
サンプルのソースコードに対して先程のように tf.summary.FileWriter
を追加し、計算グラフをよりわかりやすくするため、以下のように変数・プレースホルダーの名前付けを行っています。
1 2 3 4 5 6 |
# ソースコードの一部 x = tf.placeholder(tf.float32, [None, 784], name='x') W = tf.Variable(tf.zeros([784, 10]), name='weights') b = tf.Variable(tf.zeros([10]), name='bias') y = tf.matmul(x, W) + b y_ = tf.placeholder(tf.float32, [None, 10], name='y_') |
可視化したものはこちらになります。
入力に対して重みやバイアスがどのように働いているのかが確認することが出来ます。
それぞれのシンボルについては公式ページで詳細に解説されているので、ぜひ参考にしてみて下さい。
さいごに
今回はDockerを使ったTensorFlowの環境構築と、TensorFlowの可視化ツールである「TensorBoard」について紹介しました。
今回は計算グラフの可視化のみの紹介でしたが、TensorBoardには画像や学習過程の可視化など様々な機能があるので、興味のある方はぜひ試してみて下さい。
「とりあえず全部試してみたい!」という方はこちらの公式チュートリアルも参考にしてみて下さい。
2016卒のWebエンジニア。
採用やマネジメントもやってます。