Aufgabe vollständig gelöst
-
Größe der Output-Map bei einer 28×28-Input-Map und einem 3×3-sobel-x-Kernel 6 Schritte
Die Schicht: eine 28×28-Eingabekarte, ein 3×3-Sobel-X-Kernel, Stride 1, Padding gleich. Bestimmen Sie die Größe der Ausgabekarte und was ein Durchgang an Multiplikations-Additionen kostet – ermitteln Sie dann, wie viele solcher Schichten gestapelt werden müssen, bevor ein einzelnes Ausgabepixel von jedem Pixel des Bildes abhängt.
-
Das Padding legt die Größe fest, also klären wir dies zuerst. gleich legt einen Ein-Pixel-Rand aus Nullen um die Karte, was genau ausreicht, damit ein 3×3-Fenster zentriert auf einem Eckpixel liegt, anstatt über den Rand zu ragen. Der Rand, den ein Kernel benötigt, ist die Hälfte seiner Größe, ohne das Zentrum zu zählen.
-
Schieben Sie das Fenster entlang einer Zeile. Seine linke Kante beginnt bei 0 und rückt um den Stride vor, bis seine rechte Kante das Ende der gepaddeten Zeile erreicht. Das Zählen der Ausgabepixel ist somit eine Zaunpfahl-Zählung: die Anzahl der Schritte plus 1 für die Startposition. Bei Stride 1 gibt der Rand genau die 2 Spalten zurück, die der Kernel wegnimmt, weshalb der Modus gleich heißt.
-
Jedes der 784 Ausgabepixel ist eine gewichtete Summe von 9 Eingabewerten. Addiert man die Sobel-X-Gewichte, heben sie sich zu 0 auf; jedes Fenster, dessen 9 Eingaben alle gleich sind, liefert also genau 0 – wie hell diese Region auch sein mag. Die Karte wird überall dort dunkel, wo das Bild flach ist, und reagiert nur dort, wo sich die linke Spalte des Fensters von der rechten unterscheidet.
-
Daraus ergeben sich die arithmetischen Kosten: 9 Multiplikations-Akkumulations-Operationen pro Ausgabepixel, ein Ausgabepixel pro Fensterposition. Das Panel gibt diesen Wert aus.
-
Die Tiefe ist der interessante Teil. Nach einer Schicht sieht ein Ausgabepixel 3 Eingabepixel in der Breite. Fügt man eine zweite hinzu, war jedes dieser 3 selbst ein Fenster von 3 – aber benachbarte Fenster überlappen um 2, sodass die Spanne 5 erreicht, nicht 9. Jede weitere 3×3-Schicht mit Stride 1 erweitert sie um genau 2.
-
Setzen Sie die Spanne so an, dass sie alle 28 Spalten abdeckt, und lösen Sie nach der Tiefe auf. 13 Schichten erreichen 27 und verfehlen das Ziel um eine Spalte; die 14. ist die erste, deren Ausgabepixel vom gesamten Bild beeinflusst werden können.
Antwort
28×28 Ausgabe, 7056 Multiplikations-Additionen pro Schicht und 14 Schichten, bevor ein Pixel das gesamte Bild sieht. Berechnen Sie nun, was diese Reichweite kostet. Die 14 gestapelten Schichten verbrauchen 14 × 9 = 126 Multiplikations-Akkumulations-Operationen pro Ausgabepixel. Eine einzelne Schicht, die genauso weit reicht, benötigt einen 29×29-Kernel mit 841 pro Ausgabepixel – 6,7-mal mehr Arithmetik für genau dasselbe Sichtfeld. Tiefe erkauft Reichweite viel günstiger als Breite, weshalb Vision-Netzwerke lange Stapel von 3×3-Kerneln sind statt kurzer Stapel großer Kernel.
-
Quellen (1)
- Insight block 3 — the operation called convolution is cross-correlation: I. Goodfellow, Y. Bengio and A. Courville, Deep Learning, ch. 9. MIT Press, 2016. ISBN 978-0-262-03561-3 — "many machine learning libraries implement cross-correlation but call it convolution".