본문 바로가기
Artificial Intelligence/Neural Networks

[ CNN ] 3. Point-wise convolution - PyTorch Code

by SuperMemi 2021. 8. 12.
반응형

 

Point-wise convolution - PyTorch Code

 


 

 

 

보통의 convolution은 3x3 또는 5x5 크기의 필터를 사용해서 spatial feature 들을 뽑아낸다.

 

그런데 pointwise convolution 1x1 크기의 필터를 사용한다.

1x1 필터는 단순히 생각하면 똑같은 결과를 만드는 것이 아닌가 라고 생각된다.

실제로는 output channel을 조절하거나 parameter수를 줄여 모델을 경량화 시키고 빠르게 연산할 수 있다는 장점이 있다.

 

 

  •  공간 방향의 convolution 은 진행하지 않고, 채널 방향으로만 진행한다(Dimensionality Reduction)
  •  1 x 1 x C : 크기의 커널을 사용
  •  Inception / Xception / SqueezeNet / MobileNet 등에 적용됨.

 

  • 장점 : 출력 채널 수를 줄임. 계산량과 parameter 수를 줄일 수 있음. 연산 속도 향상
  • 단점 : 데이터가 압축되면서 정보가 손실되기도 함.
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_in, kernel_size=kernel_size, stride=stride, padding=padding, bias=False),
            nn.Conv2d(C_in, C_out , kernel_size=1, padding=0, bias=False),
            nn.BatchNorm2d(C_out, affine=affine),
            nn.ReLU(inplace=False)   
        )

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

2021.08.12 - [AI/ML & DL] - [ CNN ] 4. Depth-wise convolution - PyTorch Code

 

[ CNN ] 4. Depth-wise convolution - PyTorch Code

Depth-wise convoltuion 단일 채널에 대해서만 수행되는 필터를 이용하여 convolution 하는 것을 말한다. 채널 방향으로 합쳐지지 않고, spatial 방향으로만 convolution을 진행한다.  각 channel 별로 convolut..

supermemi.tistory.com


[ 참고자료 ]

https://eehoeskrap.tistory.com/431

반응형