python - instalar - tutorial keras español




Keras Conv2D y canales de entrada. (2)

La documentación de la capa Keras especifica los tamaños de entrada y salida para las capas convolucionales: https://keras.io/layers/convolutional/

Forma de entrada: (samples, channels, rows, cols)

Forma de salida: (samples, filters, new_rows, new_cols)

Y el tamaño del kernel es un parámetro espacial, es decir, determina solo el ancho y la altura.

Por lo tanto, una entrada con c canales producirá una salida con canales de filters independientemente del valor de c . Por lo tanto, debe aplicar la convolución 2D con un filtro de height x width espacial y luego agregar los resultados de alguna manera para cada filtro aprendido.

¿Qué es este operador de agregación? ¿Es una suma a través de canales? puedo controlarlo? No pude encontrar ninguna información en la documentación de Keras.

Gracias.


Podría ser confuso que se llame capa Conv2D (fue para mí, por lo que vine buscando esta respuesta), porque como Nilesh Birari comentó:

Supongo que te estás perdiendo el núcleo 3D [ancho, alto, profundidad]. Entonces el resultado es sumación a través de los canales.

Quizás el 2D se deriva del hecho de que el núcleo solo se desliza a lo largo de dos dimensiones, la tercera dimensión está fija y determinada por el número de canales de entrada (la profundidad de entrada).

Para obtener una explicación más detallada, lea https://petewarden.com/2015/04/20/why-gemm-is-at-the-heart-of-deep-learning/

Tomé una imagen ilustrativa de allí:


También me estaba preguntando esto, y encontré otra respuesta here , donde se dice (énfasis mío):

Quizás el ejemplo más tangible de una entrada multicanal es cuando tienes una imagen en color que tiene 3 canales RGB. Vayamos a una capa de convolución con 3 canales de entrada y 1 canal de salida. (...) Lo que hace es que calcula la convolución de cada filtro con su canal de entrada correspondiente (...). El paso de todos los canales es el mismo, por lo que generan matrices con el mismo tamaño. Ahora, resume todas las matrices y genera una matriz única que es el único canal en la salida de la capa de convolución.

Ilustración:

Observe que los pesos de los núcleos de convolución para cada canal son diferentes , que luego se ajustan de forma iterativa en los pasos de propagación hacia atrás mediante, por ejemplo, algoritmos basados ​​en gradiente decente, como el descenso de gradiente estocástico (SDG).

Aquí hay una respuesta más técnica de TensorFlow API .