[모두의 딥러닝] MNIST 99% with CNN
📗강의노트/모두의 딥러닝

[모두의 딥러닝] MNIST 99% with CNN

728x90
반응형

Sung Kim 님의 "모두의 딥러닝" 강의노트입니다

좋은 강의 감사드립니다!

https://www.youtube.com/watch?v=mQGwjrStQgg&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=5



10개 중에 1개를 예측하는 시스템을 생각가능




N개의 이미지 784개의 값을 가짐
이를 이미지 입력으로 넣기 위해 reshape을 해줌 -1은 n개를 말한다. 
x image가 바로 입력이 될 것 이다. 

필터의 크기는 3x3, 색상, 32개의 필터를 사용함 

conv를 통과시킴
Padding = same해서 w의 크기에 상관없이 출력값은 입력의 이미지 사이즈와 같게 만들어줌 (그대로 28x28 유지)

그 다음 ReLU통과( 값이 변화하지 않음)
그 후 pooling 해줌 stride 2x2 이기에 14x14로 나오게 될 것 이다.

14x14x32를 기억하고  두 번째 Conv layer에 입력을 하게 된다. 
  


64개(channel)의 필터를 사용함!

또 pooling’s strides가 2x2이기에 사이즈가 7x7로 반으로 줄어든다.

이제 마지막으로 FC(Fully Connected)를 통과해야하는데
값이 입체적이다. 그래서 이를 펼쳐야한다. 이를 펼치는 것이 reshape이다

tf.reshape( reshape대상, [n개, 7*7*64의 값으로]
7*7*64는 최종 max pool후 값이다.

n개의 7*7*64개가 있을 것이다.  이를 펼치고(reshape) FC에 넣는 것이다. 
 그러면 (N,3136)으로 나오게 된다.
 

처음 이미지가 784였는데 C1, C2를 거치기 3136으로 늘어났고 이제 FC로 넣는 것이다. 




W의 값은 Vector 입력의 값 7*7*64를 이어받는다. 그리고 10개의 label이기 때문이다( 0~ 9 )  (b 도 마찬가지이다 )  (W2 -> W3으로 수정) 





 이러한 과정을 거치면 98.85%의 정확도를 보인다

여기서 더 Deep하게 나아가 보자 
 


Conv layer와 pooling layer를 늘렸다. 







장점은 정확도가 높아진다는 것이다!
주의할 점은 dropout을 할 때 학습시에는 0.5~0.7로 평가할 때는 1로 설정하여 사용하여야한다. 



728x90
반응형