ВАЛІДНЕ прокладка: це з нульовим накладкою. Сподіваюсь, немає ніякої плутанини.
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
:),&space;0))
обчислюється таким чином, що мінімальне значення, яке можна взяти за прокладку. Оскільки значення
відоме, значення
можна знайти за допомогою цієї формули
.
Давайте опрацюємо цей приклад:
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):
&space;=&space;1,&space;n_0&space;=&space;int&space;(%5Cfrac%7B3-2+2*1%7D%7B2%7D&space;+&space;1)&space;=&space;2)
Якщо прийняти вертикальний напрямок (4):
&space;=&space;2)
Сподіваємось, це допоможе зрозуміти, як насправді прокладка SAME працює в TF.