La mayoría de los ejemplos que encontré en Internet explican bien la retropropagación en la capa de convolución, pero solo con un único kernel y un único canal de entrada.
No entiendo cómo hacer la retropropagación para más de un kernel y más de un canal de entrada.
Supongamos que tengo una capa de convolución que acepta una entrada X de tamaño 3x20x20, aplica 5 filtros de kernel 3x3x3 K y produce una salida O de tamaño 5x18x18
En un diagrama se ve así (pido disculpas por mi horrible dibujo a mano):
Durante la pasada hacia atrás, la capa recibe un error ∂E∂O y lo propaga de vuelta a la capa anterior.
Según entiendo, para calcular ∂O∂X necesito aplicar una convolución 'completa' a ∂E∂O con kernels rotados 180°. Entonces, se ve así:
Las dimensiones de ∂O∂X deberían coincidir con las dimensiones de X (3x20x20), pero la operación de convolución produce una salida con una profundidad igual al número de kernels (en mi caso 5).
Mi pregunta es ¿cómo una convolución 'completa' entre ∂E∂O 5x18x18 sobre 5 filtros rotados 3x3x3 puede producir una salida ∂O∂X con dimensiones 3x20x20? ¿No es cierto que la profundidad de la salida de la operación de convolución es igual al número de filtros?