In Alex Krizhevsky et al. Imagenet-Klassifikation mit tiefen neuronalen Faltungsnetzen zählt sie die Anzahl der Neuronen in jeder Schicht auf (siehe Abbildung unten).
Die Eingabe des Netzwerks ist 150.528-dimensional und die Anzahl der Neuronen in den verbleibenden Schichten des Netzwerks wird durch 253.440–186.624–64.896–64.896–43.264– 4096–4096–1000 angegeben.
Eine 3D-Ansicht
Die Anzahl der Neuronen für alle Schichten nach der ersten ist klar. Eine einfache Methode zur Berechnung der Neuronen besteht darin, einfach die drei Dimensionen dieser Schicht zu multiplizieren ( planes X width X height
):
- Schicht 2:
27x27x128 * 2 = 186,624
- Schicht 3:
13x13x192 * 2 = 64,896
- etc.
Betrachtet man jedoch die erste Schicht:
- Schicht 1:
55x55x48 * 2 = 290400
Beachten Sie, dass dies nicht 253,440
den Angaben auf dem Papier entspricht!
Ausgabegröße berechnen
Der andere Weg, den Ausgangstensor einer Faltung zu berechnen, ist:
Wenn das Eingangsbild ein 3D - Tensor ist
nInputPlane x height x width
, wird die Ausgabe Bildgröße sein ,nOutputPlane x owidth x oheight
wo
owidth = (width - kW) / dW + 1
oheight = (height - kH) / dH + 1
.
(aus der Torch SpatialConvolution-Dokumentation )
Das Eingabebild ist:
nInputPlane = 3
height = 224
width = 224
Und die Faltungsschicht ist:
nOutputPlane = 96
kW = 11
kH = 11
dW = 4
dW = 4
(zB Kernelgröße 11
, Schrittweite 4
)
Wenn wir diese Zahlen eingeben, erhalten wir:
owidth = (224 - 11) / 4 + 1 = 54
oheight = (224 - 11) / 4 + 1 = 54
Wir haben also nicht die 55x55
Maße, die wir für das Papier benötigen. Möglicherweise handelt es sich um Auffüllungen (das cuda-convnet2
Modell setzt die Auffüllungen jedoch explizit auf 0).
Wenn wir die 54
Dimensionen -size annehmen, erhalten wir 96x54x54 = 279,936
Neuronen - immer noch zu viele.
Meine Frage lautet also:
Wie bekommen sie 253.440 Neuronen für die erste Faltungsschicht? Was vermisse ich?
Antworten:
Aus der Stanfords-Notiz zu NN:
ref: http://cs231n.github.io/convolutional-networks/
Diese Hinweise begleiten die Stanford CS-Klasse CS231n: Convolutional Neural Networks for Visual Recognition. Bei Fragen / Bedenken / Fehlermeldungen bezüglich der Aufgaben wenden Sie sich bitte an Justin Johnson oder an Andrej Karpathy bezüglich der Kursunterlagen
quelle
Dieses Papier ist wirklich verwirrend. Zunächst einmal ist die Eingabegröße von Bildern falsch. 224 x 224 ergibt keine Ausgabe von 55. Diese Neuronen sind einfach wie gruppierte Pixel in einem, sodass die Ausgabe ein 2D-Bild von Zufallswerten (Neuronenwerten) ist. Also im Grunde genommen ist die Anzahl der Neuronen = Breite x Höhe x Tiefe, es gibt keine Geheimnisse, um dies herauszufinden.
quelle