[모두를 위한 딥러닝2] CNN #2

YSL·2021년 7월 18일
0

모두를 위한 딥러닝2

목록 보기
11/23
post-thumbnail

MNIST CNN

학습 단계

1. 라이브러리 가져오기

(torch, torchvision, matplotlib 등 import)

2. GPU 사용 설정하고 random value를 위한 seed 설정하기

3. 학습에 사용되는 parameter 설정하기

(learning_rate, training_epochs, batch_size 등)

4. 데이터셋 가져오고 (학습에 쓰기 편하게)loader 만들기

  • data loader 만들 때 shuffle은 "dataset을 섞은 상태로 보내라"를 의미한다.

    5. 학습 모델 만들기

    (class CNN(torch.nn.Module))
  • super(CNN, self).init()을 빼먹으면 학습이 전혀 되지 않으므로 반드시 넣어줘야 한다!

6. Loss function(Criterion)을 선택하고 최적화 도구(optimizer) 선택하기

  • to(device)에서 device는 CUDA가 사용 가능할 때 CUDA를, 아닐 경우 CPU를 나타낸다.
  • trianing할 때, optimizer.zero_grad()가 있어야만 학습이 가능하므로 반드시 넣어줘야 한다!

7. 모델 학습 및 loss(Criterion의 output) 확인하기

8. 학습된 모델의 성능 확인하기

=> 2개의 layer를 사용했을 때, 정확도가 약 98% 정도임을 확인할 수 있다.


Q. 만약 layer를 더 깊게 쌓으면 정확도는 어떻게 변할까?


=> layer의 개수를 늘려줌

=> layer가 더 많은 버전의 모델이 잘 만들어졌는지 확인해본다

=> 새로운 모델(layer가 많아진 버전)로 학습시킨다

=> 정확도가 오히려 전보다 줄어든 약 97%가 됐음을 확인할 수 있다
모델의 layer를 쌓을 때는 깊게 쌓는 것도 중요하지만 얼마나 효율적으로 쌓는지도 중요하다

0개의 댓글