Chainer v2.0の所感
はじめに
Chainer Meetup #04に行ってきてChainer v2.0の話を聞いてきたので感想を書きます.
開発者の方のスライドは以下.
www.slideshare.net
感想
- v2.0だからといって超すごい&イケてる新機能というのはない
Unified configuration
は嬉しい.enable_backprop
とかかなり嬉しくて,今まではvolatile flag
を相当頑張って使う(各Variableのvolatilityを把握する)ことでネットワークを記述していたところをwith
構文で美しく書けるようになるのだと解釈している.train
もかなり嬉しい.アホな人間なのでtrain
フラグの管理をまともにすることが困難であり,train=True
な状態でvalidation
とかして「性能が出ないよ〜〜〜」なんてやってしまうことが多々あったけど,そういうのが無くなるはず.
Optimizer with UpdateRule
も嬉しい.今まではWeightDecayやGradientClipping,学習率などをネットワークの各所で変えたい,という時など結構面倒で,Optimizerを別個に用意する必要があったりすることもあったけど,これからはそれも無くなるはず.うれしい.snapshot
,snapshot_object
からtrigger
が削除される話. むしろなんで今まであったんだ…という気持ちでいっぱいになる.なんで今まであったの?
あと,地味に今回のアップデートで一番安心したのが,for-loop
を使って自分で訓練ループを書き下す記法のサポートは続く,ということ.
自分はようやくTrainer
を使いこなせるようになったところだが,for-loop
で書いたほうが便利な状況は多々あるとやっぱり思う.
特に研究でDNNを書く場合,細かい調整,モデルの改変などをやろうとするとTrainerの上に乗っかるのが面倒になることもあるし.
(Trainerに乗っかることでコードが破綻しにくい,というメリットもあると思っていて,ここらへんは一長一短な気もするが…)
(そもそも最近公開されたChainerRLはTrainerを使っていない.中の人もTrainerを使ってないんですよ.)
よかったよかった.