第3回 TensorFlow 基礎から最新APIまで (4/4)

技術特集

1_tensorflow_keras1_tit

tit_tensorflow_keras

4) TensorBoardで学習の経過を見守る

上記のコードで学習を実行してみると、「training…」の表示のところで長いこと沈黙してしまうことと思います。
これは一生懸命学習処理を行っているからなのですが、頑張ってくれているとはわかっていてもレスポンスがないと不安になってしまうのが人情というもの。
工夫すればコンソールに進捗状況を表示することもできるはずですが、公式の可視化ツール TensorBoard を用いればブラウザからインタラクティブに経過を確認することができます。

学習を実行しているのとは別のターミナルを開くなどして、tensorboardコマンドを実行しましょう。
tensorboardコマンドはTensorFlowをインストールすると付随的にインストールされます。

$ tensorboard --logdir=./tfmodel
 
TensorBoard 0.4.0rc2 at http://(実行中のホスト名):6006 (Press CTRL+C to quit)

logdir引数は、TensorBoardに表示するSummaryと呼ばれるデータの保存されているディレクトリを指定します。
Estimatorを使っている場合、model_dirで指定したディレクトリに学習済みモデル等といっしょに保存されますので、そのディレクトリを指定すればOKです。

上記のようなメッセージが表示されたら、ブラウザからhttp://(TensorBoardを実行中のホスト名):6006を開いてみましょう。
下図のような画面が開くと思います。

TensorBoard

オレンジの系列は学習時の値、青の系列は評価時の値になります。
これは、画面左下の「Runs」という部分に対応しています。
logdirの中にさらにディレクトリを作って別々にSummaryを保存しておけば、TensorBoardはそれをディレクトリごとに別の系列として表示してくれます。
Estimatorは評価時のSummaryはeval以下に保存してくれるのでこのような表示になっています。

グラフのうち「loss」に注目してください。
lossはDNNが算出した結果と教師データの差異を表し、基本的には低いほどよい値です。
学習時のlossが下がっているということからは、とりあえず学習が進捗していることが確認できます。
一方評価時のlossが下がっているということからは、有効に学習が進んでいる(精度が上がっている)ということが確認できます。

一般的に評価時のlossは、最初急激に減少し、だんだん横ばいに近づいていき、ある程度を過ぎると逆に増え始めるという動きを見せます。
したがって、評価時のlossが横ばいになったなというあたりで学習を完了したいところです。この傾向をつかむのにはグラフを確認するのが適しているというわけです。

このようにEstimatorを使用すると全く追加コーディングなしでTensorBoardを利用できます。

おわりに

今回はTensorFlowの高レベルAPIであるLayers、Estimator、Datasetを用いたDNNの実装法をご紹介しました。
これらは一度使い方を覚えれば不必要な手間を避けることができ、またバグを埋め込む恐怖を緩和してくれますので、ぜひうまく使いこなしていきましょう。

さて、これでTensorFlowでディープラーニングモデルを作ることができるようになったわけですが、
実際のシステムへの応用を考えると、Pythonコマンド直打ちではなくWebアプリ等からモデルを利用できるようにしたいところです。
次回はそのための方策を考えていきます。

今回もお付き合い頂きありがとうございました。次回をお楽しみに。