Keras(on Tensorflow) vs Pytorch
前書き
最近研究でKerasとPytorchを対象研究ごとに使い分けたりすることが多いのですが、
その比較がイマイチ曖昧でしたのでまとめることにしました。
KerasもPytorchも大きな変革が・・・
2019年10月、KerasとPytorchに大きな変革がもたらされました。
Kerasは2015年、Googleで開発されたのですが、
2019年10月にTensorflow 2.0でKerasが吸収されました。
Pytorchは2016年、FaceBookで開発されました。
日本のPreferred Networksが開発したChainerがあったのですが、
2019年10月にPytorchに完全移行となりました。
実際のところ・・・Tensorflow vs Pytorchの対決な訳です。
Tensorflowが強いですが、Pytorchが追い上げを見せています。
比較
初心者向けの実装ではKeras
- 初心者にはシンプルに扱える
- モデル定義がしやすく見やすい
- 損失関数とオプティマイザを設定するだけで学習の設定完了
- 学習フェーズがcompileフェーズとfitフェーズに分かれていてわかりやすい
- 悪く言えばブラックボックス
モデル定義や学習フェーズを見ていると、
非常に簡潔で最低限のコードだけで動作します。
最も初心者に易しくシンプルな反面、
モデルの動きやDeepLearningの本質に近づくにはブラックボックスな一面があるイメージです。
よりDeepLearningの中身に近づけるPytorch
- 入力サイズと出力サイズを自分で計算・調整
- モデルのクラス化とforward関数で順伝播を意識
- 学習フェーズで損失関数の計算→微分→最適化を全て記述できる
- データの流れを確認しやすい
- デバッグしやすい
- DeepLearningのデータの流れを理解してないと難しい
Kerasと比較して、柔軟性やコードの明確性ではPytorchに軍配。
業務や学習工程やデータの流れを理解してコードを書きたい方向け。
ドキュメントではPytorchが難しい分、わかりやすく書かれています。
情報量もPytorchの方が多いみたいです。
しかし初心者にはKerasの方が扱いやすく、
手っ取り早くモデルを組みたい場合はKerasがおすすめです。