반응형
바닐라 합성곱(vanilla convolution)
- 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
참고자료
https://hichoe95.tistory.com/48
반응형
'Artificial Intelligence > Neural Networks' 카테고리의 다른 글
[ CNN ] 3. Point-wise convolution - PyTorch Code (0) | 2021.08.12 |
---|---|
[ CNN ] 2. Grouped convolution - PyTorch Code (0) | 2021.08.11 |
[ GAN ] GAN(Generative Adversarial Network)의 간단한 이해 (0) | 2021.08.10 |
[CNN] Padding 무엇인가? (0) | 2020.03.16 |
[ CNN ] pooling이란? (tf.keras.layers.MaxPool2D) (0) | 2020.03.16 |