2017-07-22 1 views
0

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 sein

Mit 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?

+0

'pad_top = 3 // 2 = 1' ->' pad_bottom = 3 // 2 - pad_top = 2'. sollte nicht pad_bottom = 0' {1 - 1} ' –

Antwort

0

Ich war bei der Tensorflow Dokumentation suche sie die Gedanken tatsächlich bestätigen:

Beachten Sie, dass die Division durch 2 bedeutet, dass es Fälle geben kann, wenn die Polsterung auf beiden Seiten (oben gegen unten, rechts gegen links) sind um eins weg. In diesem Fall erhalten die unteren und rechten Seiten immer das zusätzliche aufgefüllte Pixel. Wenn beispielsweise pad_along_height 5 ist, werden 2 Pixel oben und 3 Pixel unten geblockt. Beachten Sie, dass dies von vorhandenen Bibliotheken wie CuDNN und Caffe ist, die explizit die Anzahl der aufgefüllten Pixel angeben und immer die gleiche Anzahl von Pixel auf beiden Seiten auffüllen.

Verwandte Themen