Cálculo de dimensiones en Redes Convolucionales (CNN): Unidad 3 — Parámetros de la convolución, 3.1 — Stride, padding y tamaño
Introducción
El cálculo de dimensiones es una parte crucial en el diseño y entrenamiento de modelos de redes convolucionales (CNN). Las dimensiones de salida de cada capa se calculan según el tamaño de entrada, el número de filtros, la tasa de desplazamiento (stride), el padding y las operaciones de pooling. Aprender a calcular correctamente estas dimensiones es esencial para evitar errores en el entrenamiento y optimizar el rendimiento del modelo.
Explicación principal
Estrategia Básica: Cálculo de Dimensiones
Cuando se aplica una convolución con un kernel \( k \times k \) y stride \( s \), la fórmula para calcular las dimensiones de salida \( d' \) a partir de las dimensiones de entrada \( d \) es:
\[ d' = \frac{d - k + 2p}{s} + 1 \]
Donde:
- \( d \) es el tamaño de la dimensión original.
- \( k \) es el tamaño del kernel (tamaño del filtro).
- \( p \) es el padding, que puede ser SAME o VALID.
- \( s \) es el stride.
Ejemplo Práctico
Supongamos una imagen de entrada con dimensiones \( 32 \times 32 \), un kernel \( 5 \times 5 \), padding SAME y stride \( 1 \):
\[ d' = \frac{32 - 5 + 2}{1} + 1 = 30 \]
Por lo tanto, la dimensión de salida será \( 30 \times 30 \).
Ejemplo con Padding VALID
Para un kernel de \( 5 \times 5 \) sin padding:
\[ d' = \frac{32 - 5}{1} + 1 = 28 \]
La dimensión de salida será \( 28 \times 28 \).
Ejemplo con Padding SAME y stride \( 2 \)
Si el padding es SAME y el stride es \( 2 \):
\[ d' = \frac{32 - 5 + 2}{2} + 1 = 16 \]
La dimensión de salida será \( 16 \times 16 \).
Ejemplo con Padding VALID y stride \( 2 \)
Sin padding y stride \( 2 \):
\[ d' = \frac{32 - 5}{2} + 1 = 14 \]
La dimensión de salida será \( 14 \times 14 \).
Cálculo de Dimensiones con Multiple Filtros
Si aplicamos múltiples filtros (canales), la salida de cada canal sigue las mismas dimensiones. Si se aplica pooling después, las dimensiones siguen el mismo cálculo.
Errores típicos / trampas
- Confusión entre Padding SAME y VALID:
- Padding SAME: Se añade padding a los bordes de la imagen para mantener el tamaño original.
- Padding VALID: No se añaden bordes, lo que reduce las dimensiones.
- Desplazamiento (Stride) incorrecto:
- Usar un stride mayor puede reducir drásticamente las dimensiones del mapa de características, pero también puede perder información spatial importante.
- Mala interpretación del padding:
- Pueden surgir confusiones si el padding es impar o se aplica en dimensiones no cuadradas.
- Ejemplo: Padding \( 2 \) en una imagen de \( 15 \times 15 \). La salida será \( 14 \times 14 \), no \( 15 \times 15 \).
Checklist Accionable
- Verificar el tamaño del kernel y los filtros aplicados.
- Calcular correctamente las dimensiones de entrada y salida para cada capa convolucional.
- Usar padding adecuado (SAME o VALID) según sea necesario.
- Asegurarse de que el stride se aplica correctamente, ya sea uniforme o variable.
- Revisar las dimensiones después del pooling para garantizar que no hay errores en la transformación spatial.
- Utilizar herramientas como TensorBoard para visualizar y validar los mapas de características.
- Ejecutar ejemplos simples con conocidas fórmulas para comprobar el cálculo.
Cierre: Siguientes pasos
- Práctica: Aplica estas técnicas en varios proyectos de CNN.
- Revisar Documentación Oficial: Consulta la documentación oficial de bibliotecas como TensorFlow o PyTorch para entender mejor los parámetros y comportamientos específicos.
- Aprender más sobre pooling: Explora cómo el pooling afecta las dimensiones y cómo implementarlo adecuadamente.
Ahora que has aprendido a calcular correctamente las dimensiones en CNN, puedes avanzar con confianza en tu comprensión de estas estructuras neuronales.