Pytorch로 시작하는 딥러닝 입문(08-03. 깊은 CNN으로 MNIST 분류하기)

2024. 3. 23. 11:23딥러닝 모델: 파이토치

앞서 배운 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. 테스트하기

 

층을 더 깊게 쌓는다고 정확도가 무조건 올라가는 것은 아니다. 깊게 쌓는 것만이 아니라 효율적으로 쌓는 것이 중요하다.