python3
の環境で実行できます。
実行に必要なモジュール(動作確認バージョン)は以下の通り。
- chainer (v2.0)
- cupy (1.0.0.1)
- matplotlib (2.0.2)
src/train.py
はCNNのパラメータの学習処理を実行します。
実行結果はresult/
に保存されます。
実行方法は以下の通り。
% python src/train.py DATASET NETWORK PARAMETERS [OPTIONS]
- DATASET : 使用する画像のデータセットを指定します。
(mnist, cifar10 or cifar100) - NETWORK : 実行するCNNの名前を指定します。
(resnet, pyramid, densenet, resnext) - PARAMETERS : CNNに渡すパラメータを指定します(後述)。
また、次のオプションを指定できます。
-l NAME
: 学習係数の変更方法を指定します(default: step)。
step : 学習回数1/2と3/4のときに、学習係数を0.1倍します。
cosine : Cosine Annealing without Restart [1]
restart : Cosine Annealing with Restart [1]-r RATE
: 学習係数の初期値を指定します(default: 0.1)。-m MOMENTUM
: モーメンタムの値を指定します(default: 0.9)。-d DECAY
: Weight Decayの値を指定します(default: 0.0001)。-e EPOCH
: 学習回数を指定します(default: 300)。-b BATCH
: バッチサイズを指定します(default: 128)。-p SIZE
: 1回の計算に使う画像の数を指定します(default: 128)。-g GPU
: 使用するGPUのIDを指定します(default: -1)。--no-check
: 入力される行列の大きさのチェックを省略します。
次のCNNとパラメータを指定できます。
ただし、論文中のオリジナルとは少し異なります(詳細はQiitaの記事)。
- ResNet [2,3] (ResBlochはSingle RELUです [4])
python src/train.py DATASET resnet DEPTH WIDTH
DEPTH
: CNNの層数WIDTH
: 畳み込み層のチャンネル数(論文中のkの値)
- Pyramidal ResNet [4]
python src/train.py DATASET pyramid DEPTH ALPHA
DEPTH
: CNNの層数ALPHA
: 論文中のαの値
- DenseNet [5]
python src/train.py DATASET densenet DEPTH WIDTH
DEPTH
: CNNの層数WIDTH
: 畳み込み層のチャンネル数(論文中のkの値)
- ResNeXt [6]
python src/train.py DATASET resnext DEPTH WIDTH UNIT
DEPTH
: CNNの層数WIDTH
: 畳み込み層のチャンネル数(論文中のdの値)UNIT
: 畳み込み層のユニット数(論文中のCの値)
- ShakeNet [7]
python src/train.py DATASET shakenet DEPTH WIDTH
DEPTH
: CNNの層数WIDTH
: 畳み込み層のチャンネル数(論文中のdの値)
src/report.py
はresult/
に保存された実行結果からグラフを生成します。
実行方法は以下の通り。
% python src/result.py
src/report.py
は設定ファイルresult/meta.txt
を生成します。
このファイルを編集することにより、グラフに含めるデータや名前を変更できます。
設定ファイルのフォーマットは以下の通りです。
DIRECTORY_1: FLAG_1/NAME_1
DIRECTORY_2: FLAG_2/NAME_2
DIRECTORY_3: FLAG_3/NAME_3
...
- DIRECTORY : データが保存されているディレクトリ名です
- FLAG : グラフに含めるならTrueを指定します
- NAME : グラフの凡例に表示する名前です
- Loshchilov, Ilya, and Frank Hutter. "Sgdr: Stochastic gradient descent with warm restarts." (2016).
- He, Kaiming, et al. "Deep residual learning for image recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. (2016).
- Zagoruyko, Sergey, and Nikos Komodakis. "Wide residual networks." arXiv preprint arXiv:1605.07146 (2016).
- Han, Dongyoon, Jiwhan Kim, and Junmo Kim. "Deep pyramidal residual networks." arXiv preprint arXiv:1610.02915 (2016).
- Huang, Gao, et al. "Densely connected convolutional networks." arXiv preprint arXiv:1608.06993 (2016).
- Xie, Saining, et al. "Aggregated residual transformations for deep neural networks." arXiv preprint arXiv:1611.05431 (2016).
- Gastaldi, Xavier. "Shake-Shake regularization." arXiv preprint arXiv:1705.07485 (2017).