본문 바로가기

IT/TensorFlow

[VggNet16 / 일지] VggNet Scratch from bottom with Tensorflow

어느정도 성과가 나온 남의 모델을 이용해서 딮러닝 공부나 연구를 했었는데, 그냥 대뜸 한번 VggNet부터 하위 상위 모델부터 Tensorflow로 긁어보자는 마음을 가지고 토이프로젝트를 시작해보려고 합니다.


먼저 VggNet부터 시작할 예정이고, 차례차례 inception, ResNet, R-CNN 등등의 상/하위 모델을 다뤄볼 생각입니다.


포스팅의 구성은 학습시키면서 겪는 삽질기를 올려볼 생각입니다.



1. 기획


처음 시작은 VggNet 논문에 있는 내용을 기반으로 구현할 수 있는 수준을 최대한 빨리 구현 한 후에 수정/개선하는 식으로 진행하려고 계획했습니다.
데이터셋은 ImageNet 데이터를 받기가 조금 까다로워서 CIFAR-100 데이터로 진행했습니다. VggNet 저자들은 ImageNet 1000 class에 대해서 224x224x3 데이터를 입력으로 줬는데, CIFAR는 그보다 Image Resolution이 좋지 않아서 224x224로 강제로 업샘플링을 진행해서 입력에 넣어줬습니다.

2. 코드 구현


- 텐서보드 생략
- learning rate는 0.01로 시작해서 점차 낮춰가는 식으로 learning rate decay 진행
- Weight Decay 적용 beta값은 0.01
- Fully connected layer에 drop out을 Prob 0.5로 적용
- 배치 사이즈는 64
- epoch는 50,000
- Receptive Field의 kernel size는 모든 Conv Net이 3x3 (아키텍쳐는 VggNet논문의 Vgg16 아키텍처 구조를 따라함)
- Pooling layer는 padding 2, stride 2
- Optimizer는 Momentum, momentum factor는 0.9

3. 결과


- Error Cost가 4근방에서 더 이상 떨어지지 않는다.


4. 생각


- FCN, ResNet, Inception 등등의 저자들은 네트워크를 수렴시킬려고 얼마나 많은 삽질을 한거지?....(존경..)
- 이런 하이퍼 파라미터 셋팅에 대해서 자동화 할 수 있는 방법에 대한 강의를 본적이 있는데, 감이 안옴...

5. TODO


- 텐서보드 적용
- Optimizer 변경해서 시도해보기
- Epoch 늘려보기
- Gradient Clipping 기법 적용해보기
- Weight Decay 작동 확인해보기


'IT > TensorFlow' 카테고리의 다른 글

[Tensorflow] tf.tile  (0) 2017.12.13
[Tensorflow] tf.range  (0) 2017.12.13
Install GPU enabled TensorFlow in ubuntu 16.04 (CUDA7.5/CUDNN v4/ALIENWARE 17 R3)  (6) 2016.11.16