Pytorch로 시작하는 딥러닝 입문(08-03. 깊은 CNN으로 MNIST 분류하기)
앞서 배운 CNN에 층을 더 추가하여 MNIST를 분류해보자
♣ 모델 이해하기
모델의 아키텍처는 총 5개의 층으로 구성된다. 앞서 배운 CNN 모델과 1번 레이어와 2번 레이어는 동일하고 새로운 합성곱층과 전결합층을 추가한다.
#1번 레이어(합성곱층)
합성곱(in_channel=1, out_channel=32, kernel_size=3, stride=1, padding=1) + 활성화 함수 ReLU + 맥스 풀링(kernel_size=2, stride=2)
#2번 레이어(합성곱층)
합성곱(in_channel=32, out_channel=64, kernel_size=3, stride=1, padding=1) + 활성화 함수 ReLU + 맥스풀링(kernel_size=2, stride=2)
#3번 레이어(합성곱층)
합성곱(in_channle=64, out_channel=128, kernel_size=3, stride=1, padding=1) + 활성화 함수 ReLU + 맥스풀링(kernel_size=2, stride=2, padding=1)
#4번 레이어(전결합층)
특성맵을 펼친다 #batch_size * 4 * 4 * 128 -> batch_size * 2048
전결합층(뉴런 625개) + 활성화 함수 ReLU
#5번 레이어(전결합층)
전결합층(뉴런 10개) + 활성화 함수 Softmax
♣ 깊은 CNN으로 MNIST 분류하기
1. 도구 import
2. 파라미터 설정
3. 데이터셋 정의하기
4. 데이터로더 만들기
5. 클래스로 모델 설계하기
6. 모델, 비용함수, 옵티마이저 정의하기
7. 총 배치의 수 출력하기
총 배치의 수는 600이다. batch_size=100으로 했으므로 훈련 데이터는 60,000개이다.
8. 모델 훈련시키기
9. 테스트하기
층을 더 깊게 쌓는다고 정확도가 무조건 올라가는 것은 아니다. 깊게 쌓는 것만이 아니라 효율적으로 쌓는 것이 중요하다.