Saltar al contenido

¿Cómo calcular el número de parámetros de las redes neuronales convolucionales?

Hola, hallamos la respuesta a lo que buscas, deslízate y la verás aquí.

Solución:

Si se refiere a VGG Net con 16 capas (tabla 1, columna D), 138M se refiere a número total de parámetros de esta red, es decir, incluidas todas las capas convolucionales, pero también las completamente conectadas.

Mirando la tercera etapa convolucional compuesta por 3 x conv3-256 capas:

  • el primero tiene N = 128 planos de entrada y F = 256 planos de salida,
  • los otros dos tienen N = 256 planos de entrada y F = 256 planos de salida.

El núcleo de convolución es 3×3 para cada una de estas capas. En términos de parámetros, esto da:

  • 128x3x3x256 (pesos) + 256 (sesgos) = 295,168 parámetros para el primero,
  • 256x3x3x256 (pesos) + 256 (sesgos) = 590,080 parámetros para los otros dos.

Como se explicó anteriormente, debe hacer eso para todas las capas, pero también para las completamente conectadas, y sumar estos valores para obtener el número final de 138M.

ACTUALIZAR: el desglose entre capas da:

conv3-64  x 2       : 38,720
conv3-128 x 2       : 221,440
conv3-256 x 3       : 1,475,328
conv3-512 x 3       : 5,899,776
conv3-512 x 3       : 7,079,424
fc1                 : 102,764,544
fc2                 : 16,781,312
fc3                 : 4,097,000
TOTAL               : 138,357,544

En particular para las capas completamente conectadas (fc):

 fc1 (x): (512x7x7)x4,096 (weights) + 4,096 (biases)
 fc2    : 4,096x4,096     (weights) + 4,096 (biases)
 fc3    : 4,096x1,000     (weights) + 1,000 (biases)

(x) ver sección 3.2 del artículo: las capas completamente conectadas se convierten primero en capas convolucionales (la primera capa FC en una capa conv. 7 × 7, las dos últimas capas FC en capas conv. 1 × 1).

Detalles sobre fc1

Como se precisó anteriormente, la resolución espacial justo antes de alimentar las capas completamente conectadas es de 7×7 píxeles. Esto se debe a que esta red VGG utiliza relleno espacial antes de las convoluciones, como se detalla en la sección 2.1 del documento:

[…] el relleno espacial de conv. La entrada de la capa es tal que la resolución espacial se conserva después de la convolución, es decir, el relleno es de 1 píxel para 3 × 3 conv. capas.

Con tal relleno, y trabajando con una imagen de entrada de 224×224 píxeles, la resolución disminuye de la siguiente manera a lo largo de las capas: 112×112, 56×56, 28×28, 14×14 y 7×7 después de la última etapa de convolución / agrupación que tiene 512 mapas de características.

Esto le da un vector de características pasado a fc1 con dimensión: 512x7x7.

También se ofrece un gran desglose del cálculo para la red VGG-16 en las notas de clase de CS231n.

INPUT:     [224x224x3]    memory:  224*224*3=150K   weights: 0
CONV3-64:  [224x224x64]   memory:  224*224*64=3.2M  weights: (3*3*3)*64 = 1,728
CONV3-64:  [224x224x64]   memory:  224*224*64=3.2M  weights: (3*3*64)*64 = 36,864
POOL2:     [112x112x64]   memory:  112*112*64=800K  weights: 0
CONV3-128: [112x112x128]  memory:  112*112*128=1.6M weights: (3*3*64)*128 = 73,728
CONV3-128: [112x112x128]  memory:  112*112*128=1.6M weights: (3*3*128)*128 = 147,456
POOL2:     [56x56x128]    memory:  56*56*128=400K   weights: 0
CONV3-256: [56x56x256]    memory:  56*56*256=800K   weights: (3*3*128)*256 = 294,912
CONV3-256: [56x56x256]    memory:  56*56*256=800K   weights: (3*3*256)*256 = 589,824
CONV3-256: [56x56x256]    memory:  56*56*256=800K   weights: (3*3*256)*256 = 589,824
POOL2:     [28x28x256]    memory:  28*28*256=200K   weights: 0
CONV3-512: [28x28x512]    memory:  28*28*512=400K   weights: (3*3*256)*512 = 1,179,648
CONV3-512: [28x28x512]    memory:  28*28*512=400K   weights: (3*3*512)*512 = 2,359,296
CONV3-512: [28x28x512]    memory:  28*28*512=400K   weights: (3*3*512)*512 = 2,359,296
POOL2:     [14x14x512]    memory:  14*14*512=100K   weights: 0
CONV3-512: [14x14x512]    memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296
CONV3-512: [14x14x512]    memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296
CONV3-512: [14x14x512]    memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296
POOL2:     [7x7x512]      memory:  7*7*512=25K      weights: 0
FC:        [1x1x4096]     memory:  4096             weights: 7*7*512*4096 = 102,760,448
FC:        [1x1x4096]     memory:  4096             weights: 4096*4096 = 16,777,216
FC:        [1x1x1000]     memory:  1000             weights: 4096*1000 = 4,096,000

TOTAL memory: 24M * 4 bytes ~= 93MB / image (only forward! ~*2 for bwd)
TOTAL params: 138M parameters

La arquitectura de VGG-16 a continuación está en el documento original como lo destaca @deltheil en (tabla 1, columna D), y cito desde allí

2.1 ARQUITECTURA

Durante el entrenamiento, la entrada a nuestras ConvNets son imágenes RGB de tamaño fijo 224 × 224. El único procesamiento previo que hacemos es restar el valor RGB medio, calculado en el conjunto de entrenamiento, de cada píxel.

La imagen pasa a través de una pila de capas convolucionales (conv.), Donde usamos filtros con un campo receptivo muy pequeño: 3 × 3 (que es el tamaño más pequeño para capturar la noción de izquierda / derecha, arriba / abajo, centro) . La zancada de convolución se fija en 1 píxel; el relleno espacial de conv. La entrada de la capa es tal que la resolución espacial se conserva después de la convolución, es decir, el relleno es de 1 píxel para 3 × 3 conv. capas. La agrupación espacial se lleva a cabo mediante cinco capas de agrupación máxima, que siguen algunas de las conv. capas (no todas las capas de conv. van seguidas de la agrupación máxima). La agrupación máxima se realiza en una ventana de 2 × 2 píxeles, con paso 2.

Una pila de capas convolucionales (que tiene una profundidad diferente en arquitecturas diferentes) va seguida de tres capas totalmente conectadas (FC): las dos primeras tienen 4096 canales cada una, la tercera realiza una clasificación ILSVRC de 1000 vías y, por lo tanto, contiene 1000 canales (una para cada clase).

La última capa es la capa soft-max.

Usando lo anterior, y

  • ¡Una fórmula para encontrar la forma de activación de una capa!

  • Una fórmula para calcular los pesos correspondientes a cada capa:

Nota:

  • simplemente puede multiplicar la columna de forma de activación respectiva para obtener el tamaño de activación

  • CONV3: significa que un filtro de 3 * 3 convolverá en la entrada.

  • MAXPOOL3-2: significa, tercera capa de agrupación, con filtro 2 * 2, zancada = 2, relleno = 0 (bastante estándar en capas de agrupación)

  • Etapa 3: significa que tiene múltiples capas CONV apiladas. con el mismo relleno = 1, paso = 1 y filtro 3 * 3

  • Cin: significa la profundidad, también conocida como canal que proviene de la capa de entrada.

  • Cout: significa la profundidad, también conocida como canal saliente (lo configura de manera diferente, ¡para aprender características más complejas!),

Cin y Cout son la cantidad de filtros que se apilan para aprender múltiples características en diferentes escalas, como en la primera capa, es posible que desee aprender los bordes verticales y los bordes horizontales y los bordes en, por ejemplo, 45 grados, ¡bla, bla !, 64 posibles filtros diferentes cada uno de diferentes tipos de bordes !!

  • n: dimensión de entrada sin profundidad tal n = 224 en el caso de INPUT-image!

  • p: relleno para cada capa

  • s: zancada utilizada para cada capa

  • f: tamaño de filtro, es decir, 3 * 3 para CONV y 2 * 2 para capas MAXPOOL.

  • Después de MAXPOOL5-2, simplemente aplana el volumen y lo conecta con la primera capa FC.!

Conseguimos la mesa:ingrese la descripción de la imagen aquí

Finalmente, si agrega todos los pesos calculados en la última columna, ¡terminará con 138,357,544 (138 millones) de parámetros para entrenar para VGG-15!

Reseñas y valoraciones del tutorial

Te invitamos a defender nuestra función exponiendo un comentario y dejando una valoración te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *