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를 쌓을 때는 깊게 쌓는 것도 중요하지만 얼마나 효율적으로 쌓는지도 중요하다