I haben die folgenden Parameter:Tensorflow - gleiche Padding Calculation
in_height = 28
in_width = 28
stride (s) = 2
padding (p) = 'SAME'
Die Idee der 'gleichen' padding ist, wenn s = 1 ist, dann Eingangskarte und Ausgabekarte Abmessungen (Höhe, Breite) sollte gleich bleiben
Also, wenn ich in der Lage sollte die Polsterung Größe unter Verwendung der folgenden zu erhalten:
(28 + 2*p - 5) + 1 = 28
Solving gives p = 2
was bedeutet, es sollte auf jeder Seite 2
eine Polsterung seinMit p=2
die Ausgangskartengröße würde:
(28 + 4 -5)/2 + 1 = 14
Von Tensorflow Dokumentation, Same Padding
:
out_height = ceil(float(in_height)/float(strides[1]))
out_width = ceil(float(in_width)/float(strides[2]))
pad_along_height = max((out_height - 1) * strides[1] +
filter_height - in_height, 0)
pad_along_width = max((out_width - 1) * strides[2] +
filter_width - in_width, 0)
pad_top = pad_along_height // 2
pad_bottom = pad_along_height - pad_top
pad_left = pad_along_width // 2
pad_right = pad_along_width - pad_left
zu folgen, um die oben:
out_height = ceil(28.0/2.0) = 14.0
out_width = ceil(28.0/2.0) = 14.0
Daher
pad_along_height = max((14.0 -1)*2 + 5 - 28,0) = 3
pad_along_width = max((14.0 -1)*2 + 5 - 28,0) = 3
pad_top = 3 // 2 = 1
pad_bottom = 3//2 - pad_top = 2
pad_left = pad_along_width // 2 = 1
pad_right = pad_along_width - pad_left = 2
Also bedeutet es, dass das Bild 1 oben und 2 unten ähnlich links und rechts gepolstert werden sollte?
'pad_top = 3 // 2 = 1' ->' pad_bottom = 3 // 2 - pad_top = 2'. sollte nicht pad_bottom = 0' {1 - 1} ' –