Edited at
ChainerDay 12

最小限のコード変更でchainerの学習曲線を監視する

More than 1 year has passed since last update.


はじめに

皆さんはDLをまわしているときどうしていますか? 論文を読む、酒を飲む、寝る、など色々とあると思いますが、自分は我慢ができない質なので損失曲線をちらちら眺めるのが好きです。ただ、chainerには残念ながらデフォルトの可視化ツールがついていません。1 そこで、本記事では最小限のコード変更でchainerの学習曲線を監視する方法を紹介します。

本記事は、Chainer Advent Calendar 2017の12日目です.


やること

PyPIから私謹製のライブラリをインストールします。


shell

pip install chainerboard


そして、trainerにLogReportを追加します。


python

trainer.extend(extensions.LogReport(log_name='my_log_data')))


そして、


shell

chainerboard path/to/output/my_log_name


としたうえ、http://localhost:6006/ を開くと下記のような学習曲線を見ることができます。

screenshot1.gif

ウェブアプリベースなのでリモートサーバで立ち上げて、それをみることもできます。2

またPlotlyベースなので、拡大やら、画像へのエキスパートなどが簡単にできます。


ヒストグラムも監視する

学習がうまくいかないときなど、データの分布をみることで、重みが大きくなりすぎて不安定になっているだとかを見ることができます。

これも、最小限のコード変更でできて、


python

trainer.extend(extensions.ParameterStatistics(model))


を1行足すだけです。

screenshot2.png

ただし、バグによって現在GPUを使っているとこの機能は使えません。


Related Works

この記事を書いていて知ったのですが、Tensorboardをchainerで使えるようにするtensorboard-chainerなるプロジェクトもあるようです。比較をしてみると、

chainerboard
tensorboard-chainer

任意の数値の監視

ヒストグラム

計算グラフの可視化
×

画像、音声など
×

コード修正の必要

とまあ、機能的にはtensorboard-chainerのほうが勝っていますが、モデル自体にコードを書き足す必要があるtensorboard-chainerとは一応のすみ分けはできているのかな、と。


2017/12/22追記

Advent Calender 20日目にて公式のChainer UIが公開されました。まさかの痛恨の更新とのネタかぶり笑


まとめ

いつもどおり切羽詰まってしまったせいで chainerboardの使い方が簡単なので随分短い記事になってしまいました。ほとんど変更なしで使えるので、もし可視化が必要な方がいれば使ってみてください。もちろん、プルリクウェルカムです。





  1. PlotReportとかありますが、リアルタイムに監視はできない。 



  2. 認証とかついていないし、私はウェブプログラム素人なので、セキュリティは自分で担保してください。