Estoy tratando de entender mejor las redes neuronales convolucionales escribiendo mejor el código de Python que no depende de las bibliotecas (como Convnet o TensorFlow), y me estoy atascando en la literatura sobre cómo elegir valores para la matriz del núcleo, cuando realizando una convolución en una imagen.
Estoy tratando de entender los detalles de implementación en el paso entre mapas de características en la imagen a continuación que muestra las capas de una CNN.
De acuerdo con este diagrama:
El núcleo de la matriz del núcleo "pasa" sobre la imagen, creando un mapa de características, donde cada píxel es la suma de todos los productos de elementos entre cada peso del núcleo (o matriz de filtro) y el valor de píxel correspondiente de la imagen de entrada.
Mi pregunta es: ¿cómo inicializamos los pesos de la matriz del núcleo (o filtro)?
En la demostración anterior, son simplemente 1s y 0s, pero supongo que esto se simplifica por el bien del diagrama.
¿Se entrenan estos pesos en algún paso de preprocesamiento? ¿O elegido explícitamente por el usuario?
No puedo comentar debido a la baja reputación, así que escribo esto en respuesta a la pregunta de Felipe Almeida. Después de la respuesta perfecta de Indie AI, no hay mucho que agregar. Si desea detectar formas específicas (como una X), puede definir previamente un filtro específico, como es el caso de la detección de bordes. Pero esta es la belleza del aprendizaje profundo, hay tantas capas, tantos filtros y tantas iteraciones que los filtros aprenden casi todas las formas de objeto necesarias por sí mismas. Entonces, teóricamente, si hay una X para detectar, uno de los filtros aprenderá a detectar una X (como el filtro amarillo)
fuente