한 화면에 담긴 전체 학습 흐름
MNIST 손글씨 0~9 분류는 딥러닝의 오래된 첫 예제야. 데이터셋보다 중요한 점은 앞으로 만들 프로젝트 대부분이 따를 여섯 단계가 한 화면에 들어온다는 데 있어(전체 스크립트는 코드 블록 참고).
- 불러오기 —
keras.datasets.mnist.load_data()가 학습·시험 데이터를 NumPy 배열로 돌려줘. - 정규화 — 픽셀 값을 255로 나눠 [0, 1] 범위로 맞춰. 빠뜨리면 학습이 느리거나 불안정해질 수 있어.
- 모델 생성 — Flatten → Dense(relu) → Dropout → Dense(softmax) 순서로 Sequential 모델을 쌓아.
- 학습 설정 —
adam옵티마이저, 정수 레이블에 맞는sparse_categorical_crossentropy, 관찰할 평가지표를 지정해. - 학습 —
fit()의validation_split으로 암기가 아닌 일반화 성능을 확인해. - 평가 — 학습에 쓰지 않은 시험 데이터로 최종 성능을 재.
다섯 에포크만 학습해도 시험 정확도는 보통 97~98%에 도달해. 주의할 곳은 손실 함수야. sparse_categorical_crossentropy는 3 같은 정수 레이블을 받고, categorical_crossentropy는 [0,0,0,1,0,...] 같은 원-핫 벡터를 기대해. 둘을 바꾸면 텐서 모양 오류가 나.