ShuffleNet
1.0.0
PyTorch でのShuffleNet
の実装。 ShuffleNet
、モバイル デバイス用の効率的な畳み込みニューラル ネットワーク アーキテクチャです。この論文によると、Google の MobileNet をわずかに上回るパフォーマンスを示しています。
一言で言うと、 ShuffleNet
残差ブロック ( ShuffleUnits
と呼ばれる) を使用する ResNet のようなモデルであり、主な革新は通常の点単位の畳み込みではなく、点単位 (1x1) のグループ畳み込みを使用することです。
リポジトリのクローンを作成します。
git clone https://github.com/jaxony/ShuffleNet.git
model.py
で定義されたモデルを使用します。
from model import ShuffleNet
# running on MNIST
net = ShuffleNet ( num_classes = 10 , in_channels = 1 )
ImageNet 上で (PyTorch ImageNet の例を使用して) groups=3
でチャネル乗数なしでトレーニングされました。テスト セットでは、トップ 1 が 62.2%、トップ 5 が 84.2% でした。残念ながら、この設定ではネットワークを実行していないため、これは論文の表 5 と比較できませんが、次の設定を持つネットワークの間のどこかにあります。 groups=3
とチャネル数の半分 (上位 1 の 42.8%)、およびチャネル数は同じだがgroups=8
(上位 1 の 32.4%) のネットワーク。事前トレーニングされた状態辞書は、次の形式でここにあります。
{
'epoch': epoch + 1,
'arch': args.arch,
'state_dict': model.state_dict(),
'best_prec1': best_prec1,
'optimizer' : optimizer.state_dict()
}
注: デフォルトの ImageNet 設定でトレーニングされていますが、実際にはこの論文で説明されているトレーニング計画とは異なります。これらの設定 (およびgroups=8
) での再実行は保留中です。