2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Chainer公式および関連リポジトリで定義されているCNNの比較

Last updated at Posted at 2018-06-29

Chainer organizationやその他のリポジトリで同じCNNが複数実装されていたため比較しました。
執筆時のバージョンは以下のとおりです。

CNN実装のあるパス

Chainer

  • chainer/links/model/vision/*.py
  • GoogLeNet, VGG16Layers, ResNetLayers, ResNet[50,101,152]Layersを定義
  • chainer.Chainを継承
  • __call__(self, x, layers=['prob'])を実装 (入力xからラベル名layersの出力を返す)
  • examples/imagenet/*.py
  • AlexNet, AlexFp16, GoogLeNet, GoogLeNetBN, GoogLeNetBNFp16, NIN, ResNet50, ResNeXt50 クラスを実装
  • chainer.Chainを継承
  • __call__(self, x, t)を実装 (入力x, 出力tから損失を返す)
  • examples/modelzoo/download_model.py
  • AlexNet, CaffeNet, GoogLeNet, ResNetのCaffeの学習済みパラメタ・モデル定義をダウンロードするスクリプト
  • __call__(self, inputs, outputs)を実装 (入力{"data":x},{"ラベル名":t}から出力を返す)
  • モデル定義はCaffeの定義に準拠

ChainerMN

  • examples/imagenet/models/*.py
  • AlexNet, GoogLeNet, GoogLeNetBN, NIN, ResNet50 クラスを実装 (Chainerのexamples/imagenet/*.pyとほぼ同一)
  • GoogLeNetBNinc4c,inc4dの出力数がChainerのものと異なる (それぞれ160→128, 96→64)
  • AlexFp16, GoogLeNetBNFp16, ResNeXt50 は定義されていない
  • ResNet50では畳み込みのグループ数が指定できなくなっている

Chainer Benchmark

  • benchmarks/convnet/nets/*.py
  • Alex, GoogLeNet, overfeat, vggaクラスを定義
  • chainer.Chainを継承
  • forward(self, x)を実装 (入力xから最終層の出力を返す)

convnet-benchmarks

  • chainer/*.py
  • Chainer Benchmarkで実装されているモデルと同一

まとめ

リポジトリ パス Forward計算 AlexNet GoogLeNet ResNet
Chainer chainer/links/model/vision/*.py __call__(self, x)
examples/imagenet/*.py __call__(self, x, t)
examples/modelzoo/download_model.py __call__(self, inputs, outputs)
ChainerMN examples/imagenet/models/*.py __call__(self, x, t)
ChainerBM1 benchmarks/convnet/nets/*.py forward(self, x)
Convenet chainer/*.py forward(self, x)

AlexNetの差異

リポジトリ conv1,2のグループ数 畳み込み層フィルタ数 正規化層 入力サイズ 16 bitモデル
Chainer (imagenet) 1 96,256,384,384,256 LRN 227
Chainer (modelzoo)2 2 96,256,384,384,256 LRN 227
ChainerMN 1 96,256,384,384,256 LRN 227
ChainerBM 1 64,192,384,256,256 224
Convenet 1 64,192,384,256,256 224

感想

ONNXあたりでこういった記述が1つに統一できればいいですね (各FWの設計思想の違いで結局煩雑な変換処理が必要になりそう……)。

  1. Chainer Benchmarkの略

  2. Caffeのmodels/bvlc_alexnet/train_val.prototxtprotoc --decode_raw < bvlc_alexnet.caffemodelから判断

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?