본문 바로가기
Artificial Intelligence/Neural Networks

[ CNN ] 1. 바닐라 합성곱(vanilla convolution) - PyTorch Code

by SuperMemi 2021. 8. 11.
반응형

바닐라 합성곱(vanilla convolution)

 


 

https://brilliant.org/wiki/convolutional-neural-network/

 

  • CNN 에서 가장 기본적으로 사용되는 합성곱 방식
  • "2D spatial Feature" 을 추출하는 필터로 구성 
  • 같은 위치에 해당하는 모든 채널에 가중치 부여
  • 장점 : im2col 을 이용하여 빠르게 연산가능, Fully-connected Linear Layer 보다 적은 parameter 수

        → The numbers of Parameters : C_in * Kernel_size^2 * C_out

        → bias 사용시 위의 값에 C_out 만큼 더해줘야함.

 

  • 단점 : 깊어짐에 다라 연산량 급증, Dead Channels(신경망 학습에서 결과에 거의 영향을 주지 않음), channel간 correlation이 낮은 경우도 있는데 한번에 합쳐버리면 무의미
  • 이러한 단점을 해결하기 위해 다양한 관점의 convolution이 제안됨

        → Grouped Convolution, Point-wise Convolution, Depth-wise (Separable) Convolution 등..

 

import torch.nn as nn

class ConvBNReLU(nn.Module):
    def __init__(self, C_in, C_out, kernel_size, stride, padding, affine=True):
        super(ConvBNReLU, self).__init__()

        self.op     = nn.Sequential(
            nn.Conv2d(C_in, C_out, kernel_size, stride=stride, padding=padding, bias=False),
            nn.BatchNorm2d(C_out, affine=affine),
            nn.ReLU(inplace=False)   
        )

    def forward(self, x):
        return self.op(x)

 


다음글 : 그룹화된 합성곱 (Grouped convolution) - PyTorch Code

 

[ CNN ] 그룹화된 합성곱 (Grouped convolution) - PyTorch Code

Input Channel(C_in) 을 g개의 group으로 분리한다. 각 group 을 독립적으로 Convolution 연산을 수행한다. 장점 : 병렬 처리에 유리, 구현 간단, 기존 2D convolution에 비해 낮은 parameter 수 nn.Conv2d() 함..

supermemi.tistory.com

 


참고자료

https://hichoe95.tistory.com/48

https://eehoeskrap.tistory.com/431

https://www.slideshare.net/ssuser6135a1/ss-106656779

반응형