はじめに
皆さんはDLをまわしているときどうしていますか? 論文を読む、酒を飲む、寝る、など色々とあると思いますが、自分は我慢ができない質なので損失曲線をちらちら眺めるのが好きです。ただ、chainerには残念ながらデフォルトの可視化ツールがついていません。1 そこで、本記事では最小限のコード変更でchainerの学習曲線を監視する方法を紹介します。
本記事は、Chainer Advent Calendar 2017の12日目です.
やること
PyPIから私謹製のライブラリをインストールします。
pip install chainerboard
そして、trainerにLogReport
を追加します。
trainer.extend(extensions.LogReport(log_name='my_log_data')))
そして、
chainerboard path/to/output/my_log_name
としたうえ、http://localhost:6006/ を開くと下記のような学習曲線を見ることができます。
ウェブアプリベースなのでリモートサーバで立ち上げて、それをみることもできます。2
またPlotlyベースなので、拡大やら、画像へのエキスパートなどが簡単にできます。
ヒストグラムも監視する
学習がうまくいかないときなど、データの分布をみることで、重みが大きくなりすぎて不安定になっているだとかを見ることができます。
これも、最小限のコード変更でできて、
trainer.extend(extensions.ParameterStatistics(model))
を1行足すだけです。
ただし、バグによって現在GPUを使っているとこの機能は使えません。
Related Works
この記事を書いていて知ったのですが、Tensorboardをchainerで使えるようにするtensorboard-chainerなるプロジェクトもあるようです。比較をしてみると、
chainerboard | tensorboard-chainer | |
---|---|---|
任意の数値の監視 | ○ | ○ |
ヒストグラム | ○ | ○ |
計算グラフの可視化 | × | ○ |
画像、音声など | × | ○ |
コード修正の必要 | 小 | 中 |
とまあ、機能的にはtensorboard-chainerのほうが勝っていますが、モデル自体にコードを書き足す必要があるtensorboard-chainerとは一応のすみ分けはできているのかな、と。
2017/12/22追記
Advent Calender 20日目にて公式のChainer UIが公開されました。まさかの痛恨の更新とのネタかぶり笑
まとめ
いつもどおり切羽詰まってしまったせいで chainerboardの使い方が簡単なので随分短い記事になってしまいました。ほとんど変更なしで使えるので、もし可視化が必要な方がいれば使ってみてください。もちろん、プルリクウェルカムです。