Max Pooling 동작 순서

이준우·2021년 9월 30일
0

Basic concept

목록 보기
1/1

kernel_size = (3, 3)이고 zero_padding을 적용시킨conv_image_size = (114, 114)에 stride = 2를 적용시키면 무조건 kernel이 zero_paddig을 나가게 되어 버린다.
pooling으로 동작을 할때, zero_padding부분부터 시작하지 않고 이미지의 상단 좌측부터 동작을 한다. (위의 그림을 참고하면 무슨 말인지 쉽게 이해가 가능하다.)
이를 코드로 구현하면 (tensorflow에 쉬운 예제가 있어 잠깐 보고 가자.)

import tensorflow as tf

x = tf.constant([[1., 2., 3., 4.],
                 [5., 6., 7., 8.],
                 [9., 10., 11., 12.],
                 [13., 14., 15., 16.]])
x = tf.reshape(x, [1, 4, 4, 1])
max_pool_2d = tf.keras.layers.MaxPooling2D(pool_size=(3, 3),
   strides=(2, 2), padding='valid')

max_pool_2d(x)

ouput = <tf.Tensor: shape=(1, 2, 2, 1), dtype=float32, numpy=array([[[[11.],[12.]],[[15.],[16.]]]], dtype=float32)로 나오는 것을 알 수 있다. 실제로 코드를 작성하여 구현해보면 더욱 더 쉽게 이해할 수 있다.

Max_pooling은 down sampling의 일종이다.

profile
꿈꾸는 CV

0개의 댓글