Wie kann man die Anzahl der Faltungsoperatoren in CNN bestimmen?

10

Bei Computer-Vision-Aufgaben wie der Objektklassifizierung mit Convolutional Neural Networks (CNN) bietet das Netzwerk eine ansprechende Leistung. Ich bin mir jedoch nicht sicher, wie ich die Parameter in Faltungsschichten einrichten soll. Beispielsweise kann bei einem Graustufenbild ( 480x480) die erste Faltungsschicht einen Faltungsoperator wie verwenden 11x11x10, wobei die Zahl 10 die Anzahl der Faltungsoperatoren bedeutet.

Die Frage ist, wie die Anzahl der Faltungsoperatoren in CNN bestimmt werden kann.

Zhi Lu
quelle

Antworten:

11

Ich gehe davon 11x11x10aus, dass Sie , wenn Sie sagen , eine Ebene mit 10, 11x11-Filtern haben. Die Anzahl der Faltungen, die Sie ausführen, beträgt also einfach 10 diskrete 2D-Faltungen pro Filter in Ihrer Filterbank. Nehmen wir also an, Sie haben ein Netzwerk:

480x480x1    # your input image of 1 channel
11x11x10     # your first filter bank of 10, 11x11 filters
5x5x20       # your second filter bank of 20, 5x5 filters
4x4x100      # your final filter bank of 100, 4x4 filters    

Sie werden Folgendes tun: Mehrkanal-2D-Faltungen mit einer Tiefe von jeweils 1, 10 und 20. Wie Sie sehen können, ändert sich die Tiefe jeder Faltung in Abhängigkeit von der Tiefe des Eingangsvolumens aus der vorherigen Ebene.10+20+100=130

Aber ich nahm an, dass Sie versuchen, herauszufinden, wie Sie dies mit einer Einkanal-2D-Faltung vergleichen können. Nun, Sie können einfach die Tiefe jedes Eingangsvolumens mit der Anzahl der Filter in jeder Ebene multiplizieren und diese addieren. In Ihrem Fall: .10+200+2000=2,210

Jetzt nur noch das sagt Ihnen , wie viele Einkanal 2D Faltungen Sie tun, nicht , wie rechenintensive jeder Faltung ist, die Rechenintensität jeder Faltung wird von einer Vielzahl von Parametern ab , einschließlich image_size, image_depth, filter_size, Ihr stride(wie weit Sie zwischen jedem einzelnen Schritt Filterberechnung), die Anzahl der Pooling-Ebenen usw.

Sabalaba
quelle