Convolution(+Pooling)을 하는 이유
Feature extraction (강조, 외곽선을 따는 등의 효과를 줄 수 있음)
Fully connected layer
Decision making (ex. 분류, 회귀)
최근에는 이 fully connected layer를 줄이는 추세 Why?
더보기
파라미터가 많을수록 학습이 어렵고 generalization performance(학습 데이터가 아닌 데이터에 대한 성능)이 낮아지므로
1X1 Convolution**
bottleneck architecture
depth가 깊어져도 파라미터 수는 늘어나지 않도록..
- Filter : stride크기만큼 지나가면서 conv연산할 때 쓰이는 것, 필터와 비슷할 수록 연산값이 크다. 즉 필터와 얼마나 같은지를 연산으로 구하는 것이라고도 볼 수 있다.
- Zero-padding : 가장자리도 convolution
- Stride : 건너뛰면서 convolution
- 5X5 stride size 1이면 그냥 그대로니까 Conv 연산 후에도 5X5
- stride size 2 이면 2.5X2.5인데 이건 불가능하니까 3X3
- stride와 filter 사이즈 같으면 overlap없음
- Batch : 배치 사이즈 만큼의 개수를 갖고 학습시킬 것
- 보통 mini batch 많이 쓴다.
- Conv2D
- Input tensor of shape : [batch, in_height, in_width, in_channel]
- in_height, in width가 4, 4 이면 4X4 이미지라는 것
- 채널은 RGB면 3개
- Filter size : [filter_height, filter_width, in_channels, out_channels]
- in_channels : conv할 이미지의 채널 수(in_channel)과 같은 숫자여야 함
- 위의 예시에서 paramter의 수?
- 3 * 3 * 3 * 7 = 189개
- 참고) 파라미터 수는 적은 게 좋다...
- Bias : 필터 개수만큼~
- 결론: conv + bias 더하기 + activation func (여기까지가 머라고 햇지..?)
- + Max pooling ( ex. 2X2 씩 돌면서 젤 큰 숫자만 남김, 겹침 없이 확인)
- 28X28X64가 max pooling (2X2로) 하면 14X14X64가 됨
- + Reshape + Fully Connected Layer
- reshape은 그냥 한 줄로 피는 것 : 14X14X64 → 14X14X64
- fully connected layer는 14X14X64를 행렬 연산해서 10X1로 바꿈
- 10개 숫자가 들어가 있는 인덱스, 라벨을 사용( = 원 핫 코딩 )
- Input tensor of shape : [batch, in_height, in_width, in_channel]
-
- 정리
- Conv
- bias_add
- activation func
- max pooling
- 여기까지 하면 Conv feature map이 나옴
- reshape
- fully connected layer
- 정리
- 그러므로 최종 결과는 4X4X7
- 연산 하면 4X4X1 됨
- tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)
'딥러닝, 머신러닝 > DL Basic' 카테고리의 다른 글
CNN - 1x1 convolution의 중요성(AlexNet, VGGNet, GoogleNet, ResNet, DenseNet) (0) | 2022.02.08 |
---|---|
Optimization (0) | 2022.02.07 |
뉴럴 네트워크 - MLP (Multi-Layer Perceptron) (0) | 2022.02.07 |
DL의 대표적인 논문들 (0) | 2022.02.07 |