4. CNN

2023. 11. 21. 11:02NAVER AI Tech/Deep Learning

Convolution 연산

- filter와 image의 element-wise multiply 계산

- filter에 따라 blur, emboss, outline 등 효과를 줄 수 있다.

- stride, padding의 개념도 이해해야 함.

- 1x1 convolution : dimension reduction(=reduce the number of parameters while increasing the depth)

 

CNN consists of convolution layer, pooling layer and fully connected layer

- convolution layer and pooling layer : feature extraction

- fully connected layer : decision making

 

CNN을 학습시킬 때 전체 파라미터 숫자가 몇개인지 파악하는게 중요하다.(학습 소요시간을 예측해야하니)

 

# convolution block
prev_cdim = self.xdim[0]
for cdim in self.cdims:
    self.layers.append([nn.Conv2d(in_channels=prev_cdim, out_channels=cdim
                                   kernel_size=self.ksize, stride=(1,1), padding=self.ksize//2)]
    if self.USE_BATCHNORM:
        self.layers.append([nn.BatchNorm2d(cdim)]
    self.layers.append(nn.ReLU(True))
    self.layers.append(nn.MaxPool2d(kernel_size=(2,2), stride=(2,2)))
    self.layers.append(nn.Dropout2d(p=0.5))
    prev_cdim = cdim

# Dense block
self.layers.append(nn.Flatten())
prev_hdim = prev_cdim * (self.xdim[1] // (2**len(self.cdims))) * (self.xdim[2] // (2**len(self.cdims)))
for hdim in self.hdims:
    self.layers.append(nn.Linear(prev_hdim, hdim, bias=True))
    self.layers.append(nn.ReLU(True))
    prev_hdim = hdim
self.layers.append(nn.Linear(prev_hdim, self.ydim, bias=True))

 

 

Why use 3x3 filter size?

3x3 filter size 사용한 layer 2개 vs 5x5 filter size를 사용한 layer 1개

 

why use 1x1 filter size?

결과적으로 128 channel의 output을 가지지만 30퍼센트 가량 파라미터를 줄일 수 있다.

 

Summary:

1. VGG : why use 3x3 filter size

2. GoogLeNet : why use 1x1 filter size

3. ResNet : skip connection

4. DenseNet : concatenation and 1x1 convolution

'NAVER AI Tech > Deep Learning' 카테고리의 다른 글

5. RNN, LSTM, GRU  (1) 2023.11.21
5. CNN problems  (0) 2023.11.21
3. Deep Learning 용어 정리  (1) 2023.11.20
2. Neural Network 개념 및 코드  (1) 2023.11.20
1. Deep Learning introduction  (1) 2023.11.20