2022.07.21 - [Studying/Machine Learning] - [머신러닝] Convolutional Neural Network 이해하기
저번 포스트에 CNN을 정리하며 padding, stride, dilation이라는 개념이 나왔었다.
이것을 정리해보겠다.
Padding (zero)
Padding은 이미지 테두리에 0을 붙여주는 것이다.
필터의 사이즈를 그대로 유지하는 기능을 하기도 한다.
이 이미지의 회색 부분이 padding 부분이다.
기존 7*7 padding에 3*3 필터를 걸고 필터를 한 칸씩 움직이면 5*5가 되겠지만
padding을 1개 하면 위와 같이 9*9가 되기 때문에 그대로 7*7이 된다.
Filter size가 F*F일 때 사이즈를 유지하기 위한 패딩 공식은 다음과 같다.
(F-1)/2
예를들어 필터가 3*3이면 zero padding이 1이고
필터가 5*5이면 zero padding이 2이고
필터가 7*7이면 zero padding이 3이 된다.
Stride
Stride는 필터를 몇 칸씩 움직일지 이다.
conv layer에서는 보통 1칸씩 움직이며 데이터 손실이 없게 하지만
max pooling 같은 경우에는 특정 데이터 확산 현상을 방지하기 위해 filter size만큼 stride 한다.
Dilation
Dilation은 일반적으로는 사용을 많이 안 하지만 사용을 하는 모델들도 종종 있다.
설명을 위해 사진을 가져와보았다.
위 사진은 기존 방식으로 dilation이 1이다.
이게 dilation이 2인 conv이다.
dilation이 팽창이란 뜻이 있는데
풍선에 점을 찍고 불어서 팽창시켰을 때 점 사이의 거리가 넓어지는 것을 생각하면 될 것 같다.
이를 사용하는 이점은 같은 filter size(parameter 수)로 더 넓은 영역을 볼 수 있는 것이다.
이렇게 Convolution layer의 옵션에 대해 정리해 봤다.
다음 포스트에서는 이를 Pytorch로 구현해보겠다.
'Studying > Machine Learning' 카테고리의 다른 글
[머신러닝] Local optimum이란? (0) | 2022.07.25 |
---|---|
[머신러닝] CNN 모델 구현 with Pytorch (CIFAR-10 dataset) (2) | 2022.07.22 |
[머신러닝] Convolutional Neural Network 이해하기 (2) | 2022.07.21 |
[머신러닝] Activation function(활성화 함수) 정리 (2) | 2022.07.19 |
[머신러닝] Pytorch Linear Regression & MLP - Mnist 활용 (8) | 2022.07.18 |
댓글