Convolution Layer
convolution은 좌상단에서 시작해서 하나의 결과값을 output activation map에 저장한다.
activation map의 크기는 slide를 어떻게 하느냐에 따라 달라진다.
한 layer에서 여러 개의 filter를 사용해 다양한 특징을 추출할 수 있다.
각 필터마다 각각의 map을 생성하며 필터들이 계층적으로 학습된다.
Stride
stride는 filter를 몇 칸씩 움직이는지를 결정하는 숫자이다.
stride가 2라면 두 칸씩 sliding하며 convolution을 수행한다.
7*7 이미지를 3*3 filter로 연산을 수행할 때 stride을 3으로 한다면 이미지에 fit되지 않는다.
불균형한 결과를 만들어내므로 수행되지 않는다.
이런 경우 padding을 활용할 수 있다.
Padding
zero-pad는 이미지 주변에 0값으로 padding을 주는 것이다.
zero-pad를 통해
- 출력 사이즈를 입력 사이즈와 같게 유지할 수 있고
- 모서리 정보도 잃어버리지 않고 연산할 수 있다
보통 filter 크기가 3*3일때 zero pad를 1, 5*5일 때 2, 7*7일 때 3으로 설정한다
Torch를 사용해 Conv Layer를 구현할 수 있다
W, H, D, padding, stride, filter 등의 크기를 지정할 수 있다.
Pooling Layer
Pooling layer은 representation을 더 작게 만들고 관리할 수 있도록 한다.
- 파라미터 개수를 줄여주고
- 공간적인 불변성을 확보한다
Pooling 기법 중 Max Pooling을 가장 많이 사용한다.
filter안에서 가장 큰 숫자만 남기는 방식이다