less than 1 minute read

Convolutional Neural Networks 에서 사용되는 pooling 층 중 하나


Overview

from tensorflow.keras.layers import MaxPooling2D

model.add(MaxPooling2D((2,2)))


Feature

주요 사용 목적

Dimension Reduction

  • 차원 축소
  • 입력 측징 맵의 크기를 줄여 계산량을 감소시킨다.
  • 모델 전체의 파라미터 수와 계산량을 줄여 효율성을 증대시킨다.


Prevent over-fit

  • 공간적 차원을 줄임으로써, 모델의 과적합 위험을 감소시킨다.
  • 모델의 feature map 이 정학한 위치보다는 전반적인 구조에 더 집중한다.


Feature reinforcement

  • 주어진 영역에서 가장 큰 값을 선택해 다음 층으로 전달
  • feature map 에서 가장 큰 특징을 보존한다.


Using Example

# 모델 생성
model = Sequential()

# 컨볼루션 층 추가
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))

# MaxPooling 층 추가
model.add(MaxPooling2D((2, 2)))

# 또 다른 컨볼루션 층 추가
model.add(Conv2D(64, (3, 3), activation='relu'))

...
  • 위와 같이 컨볼루션 층 사이에 위치한다.
  • 2x2 풀링 윈도우를 사용하여 각 차원을 절반으로 축소한다.


Parameters

매개변수

pool_size

  • 풀링 윈도우 크기를 정의한다.
  • 풀링 연산을 수행할 때 고려되는 각 영역의 차원
  • 일반적으로 (2,2)를 사용한다.
    • 이는 2x2 영역에서의 최대값을 선택


strides

  • 풀링 윈도우가 입력 특징 맵을 통해 이동하는 간격이다.
  • 명시적으로 설정하지 않으면, pool_size와 동일하게 적용


padding

  • vaild: 패딩 적용 x
  • same: 입력과 출력의 크기가 동일하도록 지정

Leave a comment