작성
·
116
1
안녕하세요. 맛비님 강의영상 잘보고 있습니다.
다름이 아니라 영상도중에 이해가 되질 않아서 글 올립니다.
질문 챕터 : 15:12 쯤에 Inception Network 설명하는 부분입니다.
질문 내용 : 1x1 Conv 연산으로 각각의 channel 갯수가 각각 64, 96, 16으로 줄어드는 것 까지는 이해하였습니다.
근데 기본적으로 3x3 5x5 conv 연산을 하거나 pooling (3x3 max)연산을 진행하게 되면 feature map size가 padding을 하지 않는 이상 줄어들어야 하는게 맞는데, 왜 28x28로 고정이 되는지 알고싶습니다.
만약 3x3연산은 padding통해 output feature map size가 28x28이 되었다고 한다면, 5x5도 padding인가요? 만약 padding이라면 상하좌우 2칸씩 늘려야하는데, zero padding을 사용하는건가요?
답변 2
0
안녕하세요 🙂
너무 훌륭하게 찾으셨습니다.
네 찾아보신대로, padding 이 들어가야 NxN Conv 이후 2D domain size 를 유지할 수 있습니다.
padding 에서 zero 말고도 다양한 padding 기법이 있지만, padding 이라는게 결국 boundary 영역처리라서, 꼭 어떤 padding 이 가장 좋다 말하기 그래요 ㅎ
즐공하세요 🙂
0
제가 좀 더 찾아본 내용을 같이 올려보려고 합니다.
워낙 유명하다보니 구글에서 다음과 같은 자료가 있더라고요.
https://teddylee777.github.io/pytorch/inception-module/
InceptionModule 클래스(class)정의문에서 padding='same' 이 확인할 수 있었고, same padding을 통해 3x3, 5x5 Conv2D 연산의 output feature map size가 input size와 동일하게 나온걸 확인하였습니다. ( max 3x3 pooling도 padding 사용한것으로 보입니다. )
https://discuss.pytorch.org/t/padding-1-and-same-give-different-result/163584 (“same” which means add 0 as padding and make the output size the same as input size)
padding종류도 여러가지라서 찾아봤는데, pytorch에서 same padding은 zero padding을 기반하여 진행하는것으로 파악되어서 zero인거 같습니다. (chatgpt도 그렇다고 하더라고요.)