En Alex Krizhevsky, et al. Clasificación de imágenes con redes neuronales convolucionales profundas enumeran el número de neuronas de cada capa (véase el diagrama siguiente).
La entrada de la red tiene 150.528 dimensiones, y el número de neuronas en las capas restantes de la red viene dado por 253.440-186.624-64.896-64.896-43.264- 4096-4096-1000.
Una visión en 3D
El número de neuronas para todas las capas después de la primera es claro. Una forma sencilla de calcular las neuronas es simplemente multiplicar las tres dimensiones de esa capa ( planes X width X height
):
- Capa 2:
27x27x128 * 2 = 186,624
- Capa 3:
13x13x192 * 2 = 64,896
- etc.
Sin embargo, mirando a la primera capa:
- Capa 1:
55x55x48 * 2 = 290400
Tenga en cuenta que se trata de no 253,440
como se especifica en el documento.
Calcular el tamaño de salida
La otra forma de calcular el tensor de salida de una convolución es:
Si la imagen de entrada es un tensor 3D
nInputPlane x height x width
el tamaño de la imagen de salida será seránOutputPlane x owidth x oheight
donde
owidth = (width - kW) / dW + 1
oheight = (height - kH) / dH + 1
.
(de Documentación de Torch SpatialConvolution )
La imagen de entrada es:
nInputPlane = 3
height = 224
width = 224
Y la capa de convolución es:
nOutputPlane = 96
kW = 11
kH = 11
dW = 4
dW = 4
(por ejemplo, el tamaño del núcleo 11
, zancada 4
)
Introduciendo esas cifras obtenemos:
owidth = (224 - 11) / 4 + 1 = 54 oheight = (224 - 11) / 4 + 1 = 54
Así que nos falta uno para el 55x55
dimensiones que necesitamos para que coincida con el papel. Pueden ser acolchados (pero el cuda-convnet2
establece explícitamente el relleno en 0)
Si tomamos la 54
-tamaño de las dimensiones obtenemos 96x54x54 = 279,936
neuronas: siguen siendo demasiadas.
Así que mi pregunta es la siguiente:
¿Cómo consiguen 253.440 neuronas para la primera capa convolucional? ¿Qué me estoy perdiendo?