Colección de citas famosas - Consulta de diccionarios - ¿Cómo funcionan las capas convolucionales en las redes neuronales?

¿Cómo funcionan las capas convolucionales en las redes neuronales?

El núcleo de la red neuronal convolucional es la operación convolucional. Las estructuras de red multicapa se utilizan a menudo en aplicaciones prácticas, por lo que también se denominan redes neuronales convolucionales profundas. Este artículo comienza con el cálculo de una sola convolución y lo lleva a dominar el método de cálculo de la capa convolucional en la red neuronal.

2.1 Cálculo de una sola convolución

Para comprender el proceso de cálculo de la capa convolucional en la red neuronal, primero debemos comprender cómo funciona una sola convolución.

Creo que todos han visto la siguiente imagen en el proceso de aprender CNN (la fuente está aquí, hay varias imágenes gif convolucionales):

input_shape=(5, 5 ), kernelsize=(3, 3), padding='same ', stride=1, output_shape=(5, 5)

En esta figura:

En este cálculo:

Ps: en aplicaciones reales, cada mapa de características de salida también está equipado con un desplazamiento de polarización, que no se muestra en la figura anterior.

2.2 Capa de convolución en la operación de una red neuronal

Después de comprender cómo se calcula una sola convolución, podemos ver la "capa de convolución" desde la perspectiva de una red neuronal. El proceso de cálculo es encima. La siguiente figura es el proceso de cálculo de ingresar imágenes de tres canales (8*8*3) y generar imágenes de características de dos canales (8*8*2) a través de una capa de estructura convolucional:

Parámetro de convolución : input_shape =(8,8,3), kernelsize=(3,3), padding='mismo '', stride=1, output_shape=(8,8,2).

En esta figura:

En esta operación de capa convolucional:

Primero, centrémonos en la entrada y la salida. Todas sus escalas son (8 * 8), y la entrada es de 3 canales y la salida es de 2 canales (no importa lo que haga el aprendizaje profundo, primero debe mirar la entrada y la salida, esto es cierto para la primera capa y toda la capa). modelo).

En segundo lugar, estamos listos para ingresar el cálculo del núcleo de convolución con el que estamos más familiarizados, pero antes de eso, necesitamos saber cuántos cálculos del núcleo de convolución se han producido en esta operación. Algunos amigos pueden decir que una de las características de la convolución es "peso * *". Cuando hay varias salidas, hay varios núcleos de convolución y cada núcleo de convolución escanea el mapa de características de entrada de principio a fin. Sin embargo, ¡esto en realidad está mal!

De hecho, con respecto al número de núcleos de convolución, debería ser "la salida de varios canales tiene varios conjuntos de núcleos de convolución, y el número de núcleos de convolución en cada conjunto es igual al número de canales de entrada". ", como se muestra en la figura anterior Dibujo:

En este punto, las operaciones de esta capa convolucional están completas.

2.3 Verificación de "parámetros entrenables"

Después de todo, no hay evidencia para no decir nada. Permítanme verificar por la cantidad de "parámetros entrenables" que la capa convolucional se comporta como digo. Debe saber que los "parámetros entrenables" en la capa convolucional en realidad se refieren a esos valores en el núcleo de convolución y al desplazamiento que se agregará. Entonces, de acuerdo con el método de cálculo presentado anteriormente, ¿cuántos "parámetros entrenables" tiene una capa convolucional? Sabemos:

De esto, podemos obtener:

Entonces, obviamente, el número de parámetros entrenables debería ser:

Usemos el resumen() de keras para verificar :

¡Genial!

Recuerde, el número de parámetros entrenables de una capa convolucional normal es:

Ps: También hay una forma de medir el tamaño y la complejidad del modelo llamada "FLOP" (Floating Operaciones puntuales) ). Por lo general, solo considera el número de operaciones de multiplicación y suma en capas de parámetros como Conv y FC, y las operaciones de "suma pura" también se ignoran (como el sesgo). La fórmula de cálculo de FLOP en operaciones de capa convolucional es:

Ps: aquí necesitamos aclarar el concepto de "campo receptivo". En pocas palabras, es cuántos puntos se pueden asociar con un punto en un mapa de características de una determinada capa en la red neuronal convolucional, correspondiente al mapeo original. Usemos una imagen para explicar:

La imagen de arriba es una convolución unidimensional de tres capas con kernel_size=3. Podemos ver que el píxel superior izquierdo está relacionado con el valor de los siete píxeles inferiores izquierdos, lo que significa que su campo receptivo es 7. Obviamente podemos sacar las dos conclusiones siguientes:

Este campo receptivo se utilizará en la explicación posterior de la descomposición convolucional.