オリジナルのGit
7章のCNNを育てていきます。
- BatichNormalization 追加 (このバージョンを見る)
- CIFAR-10 環境追加 (このバージョンを見る)
データの準備は↓
- ここから CIFAR-10 binary version (suitable for C programs) をダウンロード
- データを解いて
$ tar xvzf cifar-10-binary.tar.gz
- データをまとめて
$ cat cifar-10-batches-bin/data_batch_* > cifar10-train
- 圧縮
$ gzip cifar10-train
- test用のデータ(cifar10-test.gz)も同様にね
- 畳み込み層2層追加 (このバージョンを見る)
- 畳み込み層のチャンネル数を32に全結合層のニューロン数を256に増やす
- カーネルサイズは3に減らす
- EarlyStopping (詳解 ディープラーニングを参考) を追加 (このバージョンを見る)
- ついでにデータ間引き方修正
- 3層の畳み込み層と2層の全結合層 (このバージョンを見る)
- ついでに CuPy 対応
- 畳み込み層
- カーネルサイズは 3×3
- パディングとストライドはどちらも 1
- チャンネル数は順に 32, 32, 64
- Pooling 層
- サイズ2、ストライド2 で層毎に縦横のサイズが半分になる
- BatchNormalization
- β と γ を固定した簡易版
- 全結合の隠れ層
- 512 ニューロン
- BatchNormalization(簡易版) を修正 (このバージョンを見る)
- N の平均と分散 → N,H,W 全部の平均と分散
- Binary Weight Network (このバージョンを見る)
- XNOR-Net の論文 に従い、まずはウェイトだけを2値{-1,1}化する Binary Weight Network を実装
- 1層目と出力層は2値化しない
- 値だけ2値化していてデータ型は2値化していないので速くはならない
- Binary Neural Network (このバージョンを見る)
- BNN の論文 に従い、 Binary Neural Network を実装
- deterministic な 2値化を実装
- shift based xxx は実装していない
- ついでに、テスト時の Batch Naormalization に train_flg=False のつけ忘れを修正
- ついでに 10 エポック毎に学習率を 1/10 にする機能を追加
- Ternary Activation (このバージョンを見る)
- 入力が -1/2より小さいときは -1、1/2 以上の時は 1、その間の時は 0 となる Ternary Activation を実装
- Binary Weight と組み合わせる
- ついでに 25エポックに固定
- ついでに cupy の範囲ちょっと拡大
- パラメタ保存環境 (このバージョンを見る)
- ここで推論環境構築中
- そのためのパラメタ保存環境
- ついでに、バイナリアクティベーション時のパディングで0を使っているのを修正
- ついでに、デフォルト環境をBNNにもどす
- Quaternary Activation (このバージョンを見る)
- ついでに入力データを -255~255に奇数に変更
- 蒸留
- 蒸留教師ラベルファイル(ttarray.pkl)があれば、教師データを差し替えて学習する
- 蒸留用の教師ラベル作成は
$ make_distillation.py
- ついでに、パラメータを numpy に変換してから保存
オリジナルのREADMEはここから↓
本リポジトリはオライリー・ジャパン発行書籍『ゼロから作る Deep Learning』のサポートサイトです。
フォルダ名 | 説明 |
---|---|
ch01 | 1章で使用するソースコード |
ch02 | 2章で使用するソースコード |
... | ... |
ch08 | 8章で使用するソースコード |
common | 共通で使用するソースコード |
dataset | データセット用のソースコード |
ソースコードの解説は本書籍をご覧ください。
ソースコードを実行するには、下記のソフトウェアがインストールされている必要があります。
- Python 3.x
- NumPy
- Matplotlib
※Pythonのバージョンは、3系を利用します。
各章のフォルダへ移動して、Pythonコマンドを実行します。
$ cd ch01
$ python man.py
$ cd ../ch05
$ python train_nueralnet.py
本リポジトリのソースコードはMITライセンスです。 商用・非商用問わず、自由にご利用ください。
本書の正誤情報は以下のページで公開しています。
https://github.com/oreilly-japan/deep-learning-from-scratch/wiki/errata
本ページに掲載されていない誤植など間違いを見つけた方は、japan@oreilly.co.jpまでお知らせください。