-
Tensorflow Max Pooling 개념 및 예시 코드(tensorflow.keras.layers.MaxPool2D)Data Science/Tensorflow 2022. 11. 1. 23:42반응형
1. Max Pooling이란
데이터에 필터를 씌워서 필터 내부에 가장 큰 값으로 기존의 값을 대체하는 기법
아래 그림에서는 숫자 7을 중심으로 3*3 필터를 사용하여서 가장 큰 값 9로 대체한다.
2. Tensorflow에서 maxpooling 사용 및 수행과정 확인
Tensorflow에서는 tensorflow.keras.layers.MaxPool2D 라이브러를 활용하여 maxpooling을 구현할수 있다.
이때, stride와 padding에 따라서 maxpooling이 어떻게 동작하는지 case별로 확인해본다.
2.1 실험준비 및 임의의 데이터 생성
import tensorflow as tf from tensorflow.keras.layers import MaxPool2D input_image = tf.constant([[[[6.], [5.], [4.], [1.]], [[6.], [4.], [8.], [9.]], [[7.], [4.], [2.], [6.]], [[3.], [2.], [1.], [1.]]]])
아래의 그림과 동일한 임시 이미지를 생성한다.
2.2 Case Study
해당 case study에서는 stride와 padding에 따라서 maxpooling의 과정과 결과가 어떻게 바뀌는지 살펴본다.
Max Pooling 결과는 pred에 저장하며 그림으로 대신 표현한다.
실제로 궁금하신분들은 해당 코드를 돌려서 확인해보시면 좋을것 같다.
Case1 : (filter=(3,3),stride=1, padding='valid')
valid는 padding의 기본값으로 padding을 사용하지 않겠다는 의미이다.
model = tf.keras.models.Sequential() model.add(MaxPool2D(pool_size=(3, 3), strides=(1, 1), input_shape=(4, 4, 1))) model.compile('adam', 'mean_squared_error') model.predict(input_image)
모델 요약에 따르면 출력 shape가 2 * 2 이다. (채널정보 무시)
그 과정은 아래와 같다.
Case2 : (filter=(3,3),stride=2, padding='valid')
model = tf.keras.models.Sequential() model.add(MaxPool2D(pool_size=(3, 3), strides=(2, 2), input_shape=(4, 4, 1))) model.compile('adam', 'mean_squared_error') pred = model.predict(input_image) model.summary()
Case3 : (filter=(3,3),stride=1, padding='same')
model = tf.keras.models.Sequential() model.add(MaxPool2D(pool_size=(3, 3), strides=(1, 1), padding='same', input_shape=(4, 4, 1))) model.compile('adam', 'mean_squared_error') pred = model.predict(input_image) model.summary()
Case4 : (filter=(3,3),stride=2, padding='same')
model = tf.keras.models.Sequential() model.add(MaxPool2D(pool_size=(3, 3), strides=(2, 2), padding='same', input_shape=(4, 4, 1))) model.compile('adam', 'mean_squared_error') pred = model.predict(input_image) model.summary()
Case5 : (filter=(3,3),stride=3, padding='same')
model = tf.keras.models.Sequential() model.add(MaxPool2D(pool_size=(3, 3), strides=(3, 3), padding='same', input_shape=(4, 4, 1))) model.compile('adam', 'mean_squared_error') pred = model.predict(input_image) model.summary()
반응형'Data Science > Tensorflow' 카테고리의 다른 글
Tensorflow Variational AutoEncoder 개념 및 코드 예시(VAE, MNIST Dataset) (0) 2022.11.01 Tensorflow Generative Adversarial Network 예시 코드(GAN, MNIST Data Set) (2) 2022.11.01 Tensorflow LSTM 예시 코드(LSTM, RNN, ecg.csv) (1) 2022.11.01 Tensorflow 최적화 함수 종류(Optimization Function, tf.keras.optimizers) -작성중- (0) 2022.10.26 Tensorflow Convolution Neural Network 예시 코드(CNN, MNIST DataSet) (0) 2022.10.26