Ich versuche, Faltungs-Neuronale Netze besser zu verstehen, indem ich Python-Code schreibe, der nicht von Bibliotheken (wie Convnet oder TensorFlow) abhängt Durchführen einer Faltung an einem Bild.
Ich versuche, die Implementierungsdetails im Schritt zwischen Feature-Maps in der folgenden Abbildung zu verstehen, in der die Layer eines CNN dargestellt sind.
Nach diesem Diagramm:
Der Kernel-Matrix-Kernel "springt" über das Bild und erstellt eine Feature-Map, bei der jedes Pixel die Summe aller elementweisen Produkte zwischen jedem Gewicht des Kernels (oder der Filtermatrix) und dem entsprechenden Pixelwert des Eingabebilds ist.
Meine Frage ist: Wie initialisieren wir die Gewichte der Kernel- (oder Filter-) Matrix?
In der obigen Demonstration sind sie einfach Einsen und Nullen, aber ich nehme an, dass dies aus Gründen des Diagramms vereinfacht ist.
Werden diese Gewichte in einem Vorverarbeitungsschritt trainiert? Oder vom Benutzer explizit gewählt?