En Alex Krizhevsky, et al. La clasificación de Imagenet con redes neuronales convolucionales profundas enumera el número de neuronas en cada capa (ver el diagrama a continuación).
La entrada de la red es de 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 vista 3D
La cantidad de neuronas para todas las capas después de la primera es clara. Una forma simple 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 la primera capa:
- Capa 1:
55x55x48 * 2 = 290400
¡Tenga en cuenta que esto no es 253,440
como se especifica en el documento!
Calcular 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ánOutputPlane x owidth x oheight
donde
owidth = (width - kW) / dW + 1
oheight = (height - kH) / dH + 1
.
(de la 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 11
, tamaño del grano , zancada 4
)
Al conectar esos números obtenemos:
owidth = (224 - 11) / 4 + 1 = 54
oheight = (224 - 11) / 4 + 1 = 54
Por lo tanto, 55x55
nos faltan las dimensiones que necesitamos para que coincida con el papel. Pueden ser rellenos (pero el cuda-convnet2
modelo establece explícitamente el relleno en 0)
Si tomamos las 54
dimensiones de tamaño, obtenemos 96x54x54 = 279,936
neuronas, todavía demasiadas.
Así que mi pregunta es esta:
¿Cómo obtienen 253,440 neuronas para la primera capa convolucional? ¿Qué me estoy perdiendo?