ВАЛІДНЕ прокладка: це з нульовим накладкою. Сподіваюсь, немає ніякої плутанини.
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 as , stride as та розмір ядра як (вважається лише один вимір)
Випадок 01: :
Випадок 02 :
обчислюється таким чином, що мінімальне значення, яке можна взяти за прокладку. Оскільки значення відоме, значення можна знайти за допомогою цієї формули .
Давайте опрацюємо цей приклад:
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)
Тут розмірність x дорівнює (3,4). Тоді якщо взяти горизонтальний напрямок (3):
Якщо прийняти вертикальний напрямок (4):
Сподіваємось, це допоможе зрозуміти, як насправді прокладка SAME працює в TF.