でアレックスKrizhevskyら。深い畳み込みニューラルネットワークを使用したImagenet分類では、各層のニューロン数が列挙されます(下図を参照)。
ネットワークの入力は150,528次元で、ネットワークの残りの層のニューロンの数は253,440–186,624–64,896–64,896–43,264– 4096–4096–1000で与えられます。
3Dビュー
最初のレイヤー以降のすべてのレイヤーのニューロンの数は明らかです。ニューロンを計算する1つの簡単な方法は、そのレイヤーの3つの次元を単純に乗算することです(planes X width X height
):
- レイヤー2:
27x27x128 * 2 = 186,624
- レイヤー3:
13x13x192 * 2 = 64,896
- 等
ただし、最初のレイヤーを見ると:
- レイヤー1:
55x55x48 * 2 = 290400
これは論文で指定されているものではない ことに注意してください253,440
!
出力サイズの計算
畳み込みの出力テンソルを計算する他の方法は次のとおりです。
入力画像が3Dテンソルの
nInputPlane x height x width
場合、出力画像のサイズは次のようnOutputPlane x owidth x oheight
になります
owidth = (width - kW) / dW + 1
oheight = (height - kH) / dH + 1
。
(Torch SpatialConvolution Documentationから)
入力画像は次のとおりです。
nInputPlane = 3
height = 224
width = 224
そして、畳み込み層は次のとおりです。
nOutputPlane = 96
kW = 11
kH = 11
dW = 4
dW = 4
(例:カーネルサイズ11
、ストライド4
)
これらの番号を入力すると、次のようになります:
owidth = (224 - 11) / 4 + 1 = 54
oheight = (224 - 11) / 4 + 1 = 54
ですから、私たちは55x55
紙に合わせるのに必要な寸法の不足です。それらはパディングである可能性があります(ただし、cuda-convnet2
モデルはパディングを明示的に0に設定します)
54
-sizeの次元を取ると、96x54x54 = 279,936
ニューロンが得られます-まだ多すぎます。
だから私の質問はこれです:
最初の畳み込み層で253,440個のニューロンをどのように取得しますか?私は何が欠けていますか?