Chainer入門

2017/09/16

DeepLearning, Python

今さら感はありますが、Chainerに入門したのでメモを残しておきます。
定番のMNISTとCIFAR-10の画像判別において、学習を行うコードを書きました。MNISTに関してはMLP版とCNN版を用意しています。
(2017/09/20 追記:学習したモデルを保存し、それを読み込んで推論を行うスクリプトを追加しました)

Chainerはバージョンアップに際し後方互換性を残さずバッサリ切り捨てることで有名ですが、今回コードを書く際にもChainerのバージョンが古いコードが多かったです。
特に、Trainer周りで自分で学習ループを書かなくてよくなったりと、慣れてしまえば便利ですが最初は混乱しました。
僕の環境では、Chainerのバージョンは現時点(2017/09/16)で最新の2.0.2です。

深層学習に入門するにあたって、まずはこの書籍を読みました。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
パーセプトロンから始まり、各種活性化関数や誤差逆伝搬法、CNNなどをChainerなどのフレームワークを用いずPythonで実装していきます。
Chainerなどの深層学習フレームワークではこれらの処理はフレームワーク内部に隠されており、単にメソッドを呼び出すだけで簡単に使用できます。
しかし、その仕組を理解していないと自分でネットワークを構築したりするのは難しいと思いますし、逆に仕組みを理解していればChainerのコードの簡潔さに感動すると思います。
そういった意味でも、この書籍は必読だと思います。内容もとても丁寧で分かりやすいです。

今回参考にさせていただいたサイトです。
Chainer: ビギナー向けチュートリアル Vol.1
Chainer入門その2
こちらのサイトにとても詳細な説明が記述されているので是非ご覧ください。

今回使用したコードはこちらになります。基本的にChainerのexamplesそのままですが、少し変更を加えています。
https://github.com/rystylee/chainer-study

次はChainerでのDCGAN実装に挑戦したいと思います。
次回のVJの予定も決まっているので、最近はあまり出来ていなかったVJスケッチも再開したいと思います!!!