W Alex Krizhevsky i in. Klasyfikacja Imagenet z głębokimi splotowymi sieciami neuronowymi wyliczają liczbę neuronów w każdej warstwie (patrz diagram poniżej).
Dane wejściowe sieci są 150 528-wymiarowe, a liczba neuronów w pozostałych warstwach sieci wynosi 253 340–186,624–64 896–64 8896–43,264– 4096–4096–1000.

Widok 3D
Liczba neuronów dla wszystkich warstw po pierwszej jest wyraźna. Jednym prostym sposobem obliczenia neuronów jest po prostu pomnożenie trzech wymiarów tej warstwy ( planes X width X height):
- Warstwa 2:
27x27x128 * 2 = 186,624 - Warstwa 3:
13x13x192 * 2 = 64,896 - itp.
Jednak patrząc na pierwszą warstwę:
- Warstwa 1:
55x55x48 * 2 = 290400
Zauważ, że nie jest to253,440 określone w dokumencie!
Oblicz rozmiar wyjściowy
Innym sposobem obliczenia wyjściowego tensora splotu jest:
Jeśli obraz wejściowy jest tensorem 3D
nInputPlane x height x width, rozmiar obrazu wyjściowego będzie wynosiłnOutputPlane x owidth x oheightgdzie
owidth = (width - kW) / dW + 1
oheight = (height - kH) / dH + 1.
(z dokumentacji Torch SpatialConvolution )
Obraz wejściowy to:
nInputPlane = 3height = 224width = 224
A warstwa splotowa to:
nOutputPlane = 96kW = 11kH = 11dW = 4dW = 4
(np. rozmiar jądra 11, krok 4)
Po podłączeniu tych liczb otrzymujemy:
owidth = (224 - 11) / 4 + 1 = 54
oheight = (224 - 11) / 4 + 1 = 54
Więc brakuje nam jednego z 55x55wymiarów, które musimy dopasować do papieru. Mogą być wypełnienia (ale cuda-convnet2model wyraźnie ustawia wypełnienie na 0)
Jeśli weźmiemy 54wymiary-rozmiar, otrzymujemy 96x54x54 = 279,936neurony - wciąż za dużo.
Więc moje pytanie brzmi:
Jak uzyskują 253,440 neuronów dla pierwszej warstwy splotowej? czego mi brakuje?