Suponga que tengo una capa convolucional que produce un tensor de forma (N,F,H,W) donde:
- N es el tamaño del lote
- F es el número de filtros convolucionales
- H,W son las dimensiones espaciales
Supongamos que la entrada se alimenta en una capa convolucional con filtros 1x1 de F1, relleno cero y paso 1. Entonces la salida de esta capa convolucional 1x1 tendrá forma (N,F1,H,W).
Por lo tanto, los filtros 1x1 pueden usarse para cambiar la dimensionalidad en el espacio de los filtros. Si F1>F entonces estamos aumentando la dimensionalidad, si F1<F estamos disminuyendo la dimensionalidad, en la dimensión de los filtros.
De hecho, en el artículo de Google Inception Going Deeper with Convolutions, declaran (la negrita es mía, no de los autores originales):
Uno de los grandes problemas con los módulos anteriores, al menos en esta forma ingenua, es que incluso un número modesto de convoluciones 5x5 puede ser prohibitivamente costoso encima de una capa convolucional con un gran número de filtros.
Esto nos lleva a la segunda idea de la arquitectura propuesta: aplicar judiciosamente reducciones de dimensiones y proyecciones donde los requisitos computacionales aumentarían demasiado de otra manera. Esto se basa en el éxito de las incrustaciones: incluso las incrustaciones de baja dimensión pueden contener mucha información sobre un parche de imagen relativamente grande...Las convoluciones 1x1 se utilizan para calcular reducciones antes de las costosas convoluciones 3x3 y 5x5. Además de utilizarse como reducciones, también incluyen el uso de activación lineal rectificada lo que las hace de doble uso.
Así que en la arquitectura Inception, usamos los filtros convolucionales 1x1 para reducir la dimensionalidad en la dimensión de los filtros. Como expliqué anteriormente, estas capas convolucionales 1x1 pueden usarse en general para cambiar la dimensionalidad del espacio de los filtros (ya sea aumentar o disminuir) y en la arquitectura Inception vemos lo efectivos que pueden ser estos filtros de 1x1 para la reducción de la dimensionalidad, explícitamente en el espacio de la dimensión de los filtros, no en el espacio de la dimensión espacial.
Tal vez haya otras interpretaciones de los filtros convolucionales 1x1, pero prefiero esta explicación, especialmente en el contexto de la arquitectura Google Inception.
0 votos
También vea una pregunta relacionada.
1 votos
Aquí hay una publicación de blog sobre estos módulos que detalló sobre las convoluciones 1x1: hackathonprojects.wordpress.com/2016/09/25/…
2 votos
Para decirlo de forma sencilla, la idea principal es reducir el número de canales en el volumen 3D, acelerando así el cálculo.
0 votos
1x1 conv crea dependencias por canal con un costo insignificante. Esto es especialmente aprovechado en convoluciones separables por profundidad. Nadie dijo nada al respecto, pero estoy escribiendo esto como un comentario ya que no tengo suficiente reputación aquí.
0 votos
Esencialmente se trata de promediar (o reducir) los datos de entrada (digamos C∗H∗W) a lo largo de sus canales (es decir, C). La convolución con un filtro 1x1 genera un resultado promedio en forma H∗W. El filtro 1x1 es en realidad un vector de longitud C. Cuando tienes F filtros 1x1, obtienes F promedios. Eso significa que la forma de tus datos de salida es F∗H∗W. Ahora tu entrada C∗H∗W se convierte en salida $F*H*W.
0 votos
Sé que hay algunas respuestas aquí, pero pensé que compartiría una gran visualización de un núcleo convolucional de 1 x 1 que encontré aquí: youtube.com/watch?v=Q1JCrG1bJ-A 