TensorFlow(tf.keras API)の実装デザインパターン.
機械学習の実験における主要な要素を独立性高く、拡張しやすいように整理しています.
$ tree -L 3
.
├── example # 論文実装の例
│ ├── bct
│ └── simclr
├── src # 機械学習における,コンポーネントごとに分割して実装
│ ├── data.py # 前処理、DAなど
│ ├── losses.py # 損失関数
│ └── models.py # モデル, トレーニング手法
├── utils # 汎用的に使う便利関数の置き場
└── main.py
個人的に、論文の手法を取り込んだり、カスタマイズしたくなるのは以下の部分が多い印象。
- データ前処理
- データオーグメンテーション
- 損失関数
- 何らか目的に応じて正則化したりなど、最も論文実装で多い場所
- トレーニングステップ
- GANや、Constrastive Learningみたいな、特殊な学習手法を実装する場所
TensorFlow(v2)は元来、意識して実装することでこれらを依存関係なく実装可能。
本リポジトリではさらに汎用・共通化できる部分はして、同じ枠組みにのりつつ、取り入れたい手法の部分だけに注目して変更を加えやすいようにしている。