VALID padding: ini dengan zero padding. Semoga tidak ada kebingungan.
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)
Padding SAMA : Ini agak sulit untuk dipahami di tempat pertama karena kita harus mempertimbangkan dua kondisi secara terpisah sebagaimana disebutkan dalam dokumen resmi .
Mari kita ambil input as , output as , padding as , stride as dan ukuran kernel as (hanya dimensi tunggal yang dipertimbangkan)
Kasus 01 ::
Kasus 02 ::
dihitung sedemikian rupa sehingga nilai minimum yang dapat diambil untuk pengisi. Karena nilai diketahui, nilai dapat ditemukan menggunakan rumus ini .
Mari kita kerjakan contoh ini:
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)
Di sini dimensi x adalah (3,4). Kemudian jika arah horizontal diambil (3):
Jika arah vertikal diambil (4):
Semoga ini bisa membantu untuk memahami bagaimana sebenarnya padding SAMA bekerja di TF.