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 oheight
gdzie
owidth = (width - kW) / dW + 1
oheight = (height - kH) / dH + 1
.
(z dokumentacji Torch SpatialConvolution )
Obraz wejściowy to:
nInputPlane = 3
height = 224
width = 224
A warstwa splotowa to:
nOutputPlane = 96
kW = 11
kH = 11
dW = 4
dW = 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 55x55
wymiarów, które musimy dopasować do papieru. Mogą być wypełnienia (ale cuda-convnet2
model wyraźnie ustawia wypełnienie na 0)
Jeśli weźmiemy 54
wymiary-rozmiar, otrzymujemy 96x54x54 = 279,936
neurony - wciąż za dużo.
Więc moje pytanie brzmi:
Jak uzyskują 253,440 neuronów dla pierwszej warstwy splotowej? czego mi brakuje?
Odpowiedzi:
Z notatek ze stanfordów na NN:
ref: http://cs231n.github.io/convolutional-networks/
Te uwagi towarzyszą klasie CS CS231n: Konwolucyjne sieci neuronowe do rozpoznawania wizualnego. W przypadku pytań / wątpliwości / zgłoszeń błędów dotyczących kontaktu z Justinem Johnsonem w sprawie zadań lub skontaktuj się z Andrej Karpathy w sprawie notatek z kursu
źródło
Ten papier jest naprawdę mylący. Po pierwsze, wejściowy rozmiar obrazów jest nieprawidłowy. 224 x 224 nie daje wyniku 55. Te neurony są po prostu jak zgrupowane piksele w jednym, więc wynik jest obrazem 2D losowych wartości (wartości neuronów). Więc w zasadzie liczba neuronów = szerokość x wysokość x głębokość, nie ma żadnych tajemnic, aby to rozgryźć.
źródło