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の対決な訳です。

mmll.hatenablog.com

Tensorflowが強いですが、Pytorchが追い上げを見せています。

比較

初心者向けの実装ではKeras

  • 初心者にはシンプルに扱える
  • モデル定義がしやすく見やすい
  • 損失関数とオプティマイザを設定するだけで学習の設定完了
  • 学習フェーズがcompileフェーズとfitフェーズに分かれていてわかりやすい
  • 悪く言えばブラックボックス

モデル定義や学習フェーズを見ていると、
非常に簡潔で最低限のコードだけで動作します。
最も初心者に易しくシンプルな反面、
モデルの動きやDeepLearningの本質に近づくにはブラックボックスな一面があるイメージです。

よりDeepLearningの中身に近づけるPytorch

  • 入力サイズと出力サイズを自分で計算・調整
  • モデルのクラス化とforward関数で順伝播を意識
  • 学習フェーズで損失関数の計算→微分→最適化を全て記述できる
  • データの流れを確認しやすい
  • デバッグしやすい
  • DeepLearningのデータの流れを理解してないと難しい

Kerasと比較して、柔軟性やコードの明確性ではPytorchに軍配。
業務や学習工程やデータの流れを理解してコードを書きたい方向け。
ドキュメントではPytorchが難しい分、わかりやすく書かれています。
情報量もPytorchの方が多いみたいです。
しかし初心者にはKerasの方が扱いやすく、
手っ取り早くモデルを組みたい場合はKerasがおすすめです。

結論

どっちも触れたらいいんですけどね

rightcode.co.jp