본문 바로가기
AI/PyTorchZeroToAll by Sung Kim

[PyTorchZeroToAll] 11. Advanced CNN

by 쵸빙 2020. 1. 28.

     이번 시간에는 좀 더 발전된 CNN에 대해서 알아보도록 하겠다.

 

     여러 필터의 사이즈 중에서 어떤 것을 사용해야할까? 위 예에서는 5 x 5, 3 x 3, 1 x 1의 필터들을 쓴 다음 합친다.

맨 처음에 1 x 1 필터로 convolution을 한 뒤 5 x 5, 3 x 3 등과 연결하고, average pooling도 따로 수행한다.

 

1 x 1 convolution

     그렇다면 왜 1 x 1 convolution을 수행해야할까? 우리가 56 x 56 이미지를 가지고 있고, 그것의 깊이가 64라고 하자.

우리는 1 x 1 convolution을 여기에 적용하면 결과는 1 x 56 x 56이 될 것이다. dot product이기 때문에

결과의 채널이 1의 깊이를 가지게 되는 것이다.

 

 

     1 x 1 convolutional layer로 우리는 필터의 개수를 조정해서 결과의 depth를 결정할 수 있다.

크기는 56 x 56으로 똑같지만 depth만 다른 결과를 만들 수 있는 것이다.

 

 

     예를 들어, 채널이 192인 28 x 28 이미지가 있다고 하자. convolution을 거쳐서 32 채널의 28 x 28을 만드려고 한다.

5 x 5와 패딩을 사용한 32개의 필터로 같은 크기의 32 채널의 결과를 얻을 수 있다.

만약 1 x 1 convolution이 없었다면 위와 같이 너무 많은 연산이 필요했을 것이다.

 

 

     위와 같이 구현해보겠다.

 

전체 코드는 위와 같다.