HỢP LỆ padding: đây là với zero padding. Hy vọng không có sự nhầm lẫn.
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)
Đệm SAME : Đây là loại khó hiểu ngay từ đầu vì chúng ta phải xem xét hai điều kiện riêng biệt như được đề cập trong các tài liệu chính thức .
Chúng ta hãy lấy đầu vào là , đầu ra là , đệm như , sải bước và kích thước hạt nhân như (chỉ một chiều duy nhất được xem xét)
Trường hợp 01 ::
Trường hợp 02 ::
được tính toán sao cho giá trị tối thiểu có thể được lấy để đệm. Vì giá trị được biết đến, giá trị của có thể được tìm thấy bằng cách sử dụng công thức này .
Hãy làm ví dụ này:
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)
Ở đây kích thước của x là (3,4). Sau đó, nếu hướng ngang được thực hiện (3):
Nếu hướng dọc được lấy (4):
Hy vọng điều này sẽ giúp hiểu cách thực sự SAME padding hoạt động trong TF.