전체 파이프라인이 한 화면에
고전 deep-learning hello-world: MNIST 손글씨 0–9 분류. 가치 있는 건 데이터셋이 아니라, Keras 전체 workflow 가 한 화면에 들어온다는 점 — 앞으로 짤 모든 프로젝트가 이 여섯 단계를 같은 순서로 재사용해 (전체 스크립트는 Code 섹션).
- Load —
keras.datasets.mnist.load_data()가 train/test 를 NumPy array 로 바로 줘. 다운로드 배관 신경 안 써도 돼. - Normalize — pixel 을 255 로 나눠 [0, 1] 로. 빼먹으면 학습이 느리거나 불안정해 — 제일 흔한 누락이야.
- Build — 앞 lesson 의 Sequential stack: Flatten → Dense(relu) → Dropout → Dense(softmax).
- Compile — optimizer (
adam), loss (sparse_categorical_crossentropy, label 이 그냥 정수라서), 지켜볼 metric 연결. - Train —
fit()에validation_split줘서 암기 말고 일반화를 봐. - Evaluate — 학습에 안 쓴 test set 으로 채점.
5 epoch 면 test accuracy 97-98%. 4단계 loss 선택이 미묘한 함정 — sparse_categorical_crossentropy 는 3 같은 정수 label 을 기대하고, categorical_crossentropy 는 [0,0,0,1,0,...] 같은 one-hot 을 기대해. 잘못 고르면 Keras 가 shape 에러 — exercise 에서 일부러 터뜨려 볼 바로 그 실패 모드야.