새소식

Deep Learning

CNN [0]

  • -

- CNN : Convolutional Neural Network

- Typical CNN architectures

 

 

- Key Operations in CNN

 

- Fully connected layer

- input image (32, 32, 3) --> (3072, 1)  // stretch, 32*32*3 = 3072
- weight (10, 3072)
- activation (1, 10)

- Fully connected layer는 서로 다른 weight으로 전체 레이어에 대해 계산하지만, Convolutional layer는 localized area만 보고, weight가 공유된다.

 

 

 

- Convolutional layer

- input image (32, 32, 3)
- filter (5, 5, 3)  // filters always extend the full depth of the input volume --> input이 3channel이면, filter도 3channel로 확장.
- stride 1 // filter가 얼만큼 움직이는지?
- activation (1, 28, 28)

 

- 여기서 filter는 weight set이라고 봐도 된다. (한 filter는 weight set을 공유하기 때문!)

- 또한 한 filter는 하나의 associated bias를 가진다.

 

 

- Convolution 후 feature map의 size를 계산하고 싶다면?

1. Original Input (6, 6, 1)

2. Filter (3, 3, 1)

3. stride = 1

 

---

 

- original에서 filter 크기를 먼저 빼면, 3칸이 남는다, 그리고 stride로 나누면 3번의 컨볼루션이 더 수행된다는 뜻인데,

여기서 처음 filter가 놓인 공간까지 계산해서 1을 더해준다.

- 즉, 1 + (originalsize-filtersize)/stride 로 계산이 가능하다.

 

1. Original Input (32, 32, 1)
2. Filter (3, 3, 1)
3. stride 2

- 위 조건의 경우,  (32-3)/2 +1을 하게 되면 14.5+1 = 15.5가 되는데, 이 때는 소수점 이하를 drop한다. (15)

 

 

- 또한 dimension을 같도록 유지하기 위해 padding(테두리, 주로 zero-pad border) 개념이 도입된다.

(32, 32, 1) input에서
padding 1이 적용되면
(33, 33, 1) input이 된다.

- 여기서 주의할 점은, padding은 양옆, 위아래로 적용되기 때문에, 사실 가로 세로로 2 point씩 커진 거라고 생각하면 된다.

- 즉, 위의 공식에서 originalsize에 2*padding을 더해주어야 한다는 소리!

 

1. Original Input (32, 32, 1)
2. Filter (5, 5, 1)
3. stride 1
4. padding 2

- 위 조건의 경우,  (32+(2*2) - 5)/1 + 1을 하게 되니까, Feature map size는 그대로 (32, 32, 1)이 된다.

 

 

- 또한, filter의 개수에 따라 Output volume의 Depth가 정해진다.

 

 

'Deep Learning' 카테고리의 다른 글

Up-sampling  (0) 2021.06.14
CNN [1] : Pooling & Convolution  (0) 2021.06.07
[Draft] Numerical Instability in Deep Learning  (0) 2021.05.24
[draft] Optimization Variants  (0) 2021.05.17
Batch Normalization, 배치 정규화  (0) 2021.05.10
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.