Ein ähnliches Problem wäre, wie viele Pixel werden von jeder Aktivierung abgedeckt werden? was ist im Wesentlichen das gleiche wie, wie groß ein Eingabebild sein muss, um genau eine Aktivierung in einer Schicht zu erzeugen?
Sagen Sie die Filtergröße und Schritt einer Schicht k
und s
, ist die Größe des Eingangs x*x
, haben wir (((x-k1+1)/s1-k2+1)/s2.../sn)=1
und x
leicht gelöst werden kann.
Die ursprüngliche Frage ist äquivalent zu, wie groß ein Eingabebild sein muss, um genau eine Aktivierung in einer Schicht zu erzeugen, ohne den Schritt der letzten Schicht zu berücksichtigen?
Die Antwort ist also x/sn
, die durch den folgenden Pseudocode berechnet werden sollte
x = layer[n].k
from i = n-1 to 1
x = x*layer[i].s + layer[i].k - 1
die Gesamtmenge von Pixeln wird dann x*x
.
In Ihrem Beispiel ist die sum_1d
für die erste Schicht 5, für die zweite Schicht ist 5 * 1 + 3-1 = 7, die dritte ist 5 * 3 + 2 + 4 = 21 (ich nehme an Pooling Layer ist nicht überlappend, s = 3) ..
Sie können dies überprüfen, indem Sie das Gegenteil tun, sagen die Eingabe ist 21 * 21, nach der ersten Schicht ist es 17 * 17, nach dem Pooling ist es (17 -2)/3 = 5 (eigentlich ergeben 16 * 16 und 15 * 15 das gleiche Ergebnis), das genau in einen Filter in der dritten Schicht passt.
Danke. Nehmen wir an, die Bildgröße ist 487, ks_arr = [11, 7, 11, 7], step_arr = [3, 3, 3, 3]. Basierend auf Ihren Berechnungen wird die letzte Ebene 77 Pixel abdecken. Aber wenn ich es umkehre, wird die endgültige Bildgröße 4x4 sein. 487/4 ~ = 120. Ich denke, der letzte Filter sollte ~ 120 Pixel abdecken. Hab ich recht? – user570593
@ user570593 richtig .. wirklich leid für die falsche Antwort, ich werde versuchen, es zu beheben – dontloo
Danke für die Antwort. Ich denke, dass Schicht [i-1] .s mit einem Wert multipliziert werden muss. Aber ich bin verwirrt. – user570593