Unter Verwendung der Notation aus der Wikipedia - Seite, die Faltung in einem CNN wird der Kern sein , von denen wir einige Gewichte lernen , um die Daten , die wir brauchen , und dann vielleicht anwenden eine Aktivierungsfunktion zu extrahieren.G
Diskrete Windungen
Auf der Wikipedia-Seite wird die Faltung als beschrieben
( f∗ g) [ n ] = ∑infm = - inff[ m ] g[ n - m ]
Angenommen, ist die Funktion f und b ist die Faltungsfunktion g ,einfbG
Um dies zu lösen, können wir zuerst die Gleichung verwenden , indem wir die Funktion aufgrund des in der Gleichung erscheinenden - m vertikal umdrehen . Dann berechnen wir die Summe für jeden Wert von n . Während der Änderung von n bewegt sich die ursprüngliche Funktion nicht, jedoch wird die Faltungsfunktion entsprechend verschoben. Ab n = 0 ,b- mnnn = 0
c[0]=∑ma[m]b[−m]=0∗0.25+0∗0.5+1∗1+0.5∗0+1∗0+1∗0=1
c[1]=∑ma[m]b[−m]=0∗0.25+1∗0.5+0.5∗1+1∗0+1∗0=1
c[2]=∑ma[m]b[−m]=1∗0.25+0.5∗0.5+1∗1+1∗0+1∗0=1.5
c[3]=∑ma[m]b[−m]=1∗0+0.5∗0.25+1∗0.5+1∗1=1.625
c[4]=∑ma[m]b[−m]=1∗0+0.5∗0+1∗0.25+1∗0.5+0∗1=0.75
c[5]=∑ma[m]b[−m]=1∗0+0.5∗0+1∗0+1∗0.25+0∗0.5∗0∗1=0.25
As you can see that is exactly what we get on the plot c[n]. So we shifted around the function b[n] over the function a[n].
2D Discrete Convolution
For example, if we have the matrix in green
with the convolution filter
Then the resulting operation is a element-wise multiplication and addition of the terms as shown below. Very much like the wikipedia page shows, this kernel (orange matrix) g is shifted across the entire function (green matrix) f.
taken from the link that @Hobbes reference. You will notice that there is no flip of the kernel g like we did for the explicit computation of the convolution above. This is a matter of notation as @Media points out. This should be called cross-correlation. However, computationally this difference does not affect the performance of the algorithm because the kernel is being trained such that its weights are best suited for the operation, thus adding the flip operation would simply make the algorithm learn the weights in different cells of the kernel to accommodate the flip. So we can omit the flip.