GÜLTIGE Auffüllung: Dies erfolgt mit Null-Auffüllung. Hoffe es gibt keine Verwirrung.
x = tf.constant([[1., 2., 3.], [4., 5., 6.],[ 7., 8., 9.], [ 7., 8., 9.]])
x = tf.reshape(x, [1, 4, 3, 1])
valid_pad = tf.nn.max_pool(x, [1, 2, 2, 1], [1, 2, 2, 1], padding='VALID')
print (valid_pad.get_shape()) # output-->(1, 2, 1, 1)
GLEICHE Polsterung: Dies ist in erster Linie schwierig zu verstehen, da wir zwei Bedingungen getrennt betrachten müssen, wie in den offiziellen Dokumenten erwähnt .
Nehmen wir Eingabe als
, Ausgabe als
, Auffüllen als
, Schritt als
und Kernelgröße als
(nur eine einzige Dimension wird berücksichtigt).
Fall 01:
:)
Fall 02:
:),&space;0))
wird so berechnet, dass der Mindestwert, der zum Auffüllen verwendet werden kann. Da der Wert von
bekannt ist, kann der Wert von
unter Verwendung dieser Formel gefunden werden
.
Lassen Sie uns dieses Beispiel ausarbeiten:
x = tf.constant([[1., 2., 3.], [4., 5., 6.],[ 7., 8., 9.], [ 7., 8., 9.]])
x = tf.reshape(x, [1, 4, 3, 1])
same_pad = tf.nn.max_pool(x, [1, 2, 2, 1], [1, 2, 2, 1], padding='SAME')
print (same_pad.get_shape()) # --> output (1, 2, 2, 1)
Hier ist die Dimension von x (3,4). Wenn dann die horizontale Richtung genommen wird (3):
&space;=&space;1,&space;n_0&space;=&space;int&space;(%5Cfrac%7B3-2+2*1%7D%7B2%7D&space;+&space;1)&space;=&space;2)
Wenn die vertikale Richtung genommen wird (4):
&space;=&space;2)
Ich hoffe, dies hilft zu verstehen, wie die gleiche Auffüllung in TF tatsächlich funktioniert.