반응형
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
[ 참고자료 ]
반응형
'Artificial Intelligence > Neural Networks' 카테고리의 다른 글
[ CNN ] 5. Depth-wise Separable convolution - PyTorch Code (0) | 2021.08.12 |
---|---|
[ CNN ] 4. Depth-wise convolution - PyTorch Code (0) | 2021.08.12 |
[ CNN ] 2. Grouped convolution - PyTorch Code (0) | 2021.08.11 |
[ CNN ] 1. 바닐라 합성곱(vanilla convolution) - PyTorch Code (0) | 2021.08.11 |
[ GAN ] GAN(Generative Adversarial Network)의 간단한 이해 (0) | 2021.08.10 |