Pooling Layer¶
CNN에서
각 layer별로 입력에 대한
subsample을 출력으로 얻어내게 해주는 layer임.
- CNN에서 계산량과 메모리 사용량을 줄여줌.
- over-fitting 의 위험도(CNN의 translation invairance를 얻게해줌)를 줄여줌.
- down-sampling을 수행!
- global pooling의 경우, flatten layer로 사용됨.
depth 방향의 pooling을 통해 CNN에 강력한 invariance를 부여해 주는데 사용됨.
invariance는 입력의 변화에 상관없이 출력이 나오는 것을 의미함.
Pooling의 종류.¶
- max-pooling과
- average-pooling
두 종류가 있음.
Hyper-Parameters¶
Convolutional layer 와 달리,
- 입력과 같은 width와 height를 유지할 필요가 없으므로,
- padding을 하지 않는게 일반적임.
TensorFlow 에서는
padding
파라메터의 기본값이valid
로 설정됨. (padding이 이루어지지 않음)
kernel size¶
클 경우, over-fitting이 될 확률이 줄어들지만, layer에서의 정보손실이 너무 커짐.
- invariance가 너무 커지게 됨.
stride¶
일반적으로 non-overlapping pooling이 선호되기 때문에, stride도 kernel size에 따라 정해지는게 일반적임. (kernel size 이상의 stride를 가짐.)
많은 CNN 구조에서 Pooling layer를 사용하지만,
convolution에서의 stride를 크게 잡아서 subsampling을 수행함으로
pooling layer 를 대신하는 경우도 있음.
읽어보면 좋은 자료들.¶
...