본문 바로가기

데이터/딥러닝

CS231n_Lecture5:Convolutional Neural Networks

<Fully Connected Layer>

 

  • 초기에는 input image를 rlfrpvutj 3072차원의 벡터로 만들고 가중치 w를 곱하고, activation을 통해 출력을 얻었다.

 

<Convolution Layer>

 

 

  • RGB color로(×3) 예시를 들자면, convolve filter를 두고 이 필터로 input의 이미지에서 특징을 추출한다. 

 

  • depth는 같아야 하고 결과적으로 5×5×3 convolve filter를 거쳐 28×28×1인 하나의 activation map이 나오게 되고 이것이 하나의 layer가 된다.

 

  • 6개의 filter를 사용하면 6개의 activation maps가 나오고 depth는 6이 된다.

ReLU는 0이하의 값들을 전부 0으로 만든다

 

sliding하면서 filter값 나옴(stride가 1일수도(한칸씩 옆으로), 2일수도 있음(두칸씩 옆으로))

 

 

  • 만약 stride가 3이면 fit하지 않음

 

  • 이미지가 작으면 cnn층을 몇개 쌓지 않아도 sliding할 부분이 작이지고, 중간 영역들은 filter들이 중복되어 겹쳐보이는 반면 양쪽 side는 중간에 비해 보는 횟수가 적다. 따라서 zero-padding으로 양쪽 사이드에 zero값을 두른다. 그러면 7×7입력에 3×3 필터연산을 수행할때 zero-padding을 하면  7×7출력을 얻게 한다. (N=9, (9-3/1)+1)

 

  • 일반적으로 filter가 3이면 zero pad를 1개만 하고, filter가 5면 zero pad를 2개함

 

  • padding 써야 이미지 크기가 급격히 줄어드는 것 방지할 수 있다.

32×32×3 input에 5×5filter 10개와 stride1, pad가 2이면?

 

32×32×10이 된다!

 

파라미터 수는 (5×5×3)×10 + 10(bias)

 

<The brain/neuron ivew of CONV Layer>

  • 1×1 convolution layer를 inputdmfh Fully Connected layer에 넣음 → 하나의 filter에 대한 영역에서 1개의 숫자가 나오게 된다(local connect와 유사)

 

  • 5개의 필터가 있으면 같은 영역에 대해 5개의 값 나옴(다 다른 특성으로)

 

<Pooling layer>

  • activation maps의 사이즈를 줄인다.

 

Max pooling

  • Max pooling : 가장 큰 값 추출