C.W.K.
Stream
Lesson 07 of 08 · published

evaluate() 와 predict()

~8 min · training

Level 0Keras 도제
0 XP0/97 lessons0/20 achievements
0/120 XP to next level120 XP to go0% complete

메서드 둘, 질문 둘

학습 끝났으면 model 한테 다른 두 가지를 물어봐. model.evaluate(x_test, y_test) 는 *얼마나 좋냐* — compile 때 넣은 loss / metric 을 labeled data 위에서 돌려 숫자로 돌려줘. model.predict(x) 는 *뭐라고 생각하냐* — unlabeled input 받아 raw output 반환. 채점할 정답 있으면 evaluate, 실제로 model 쓸 땐 predict.

둘 다 inference mode 로 돌아 — dropout 꺼지고, batch-norm 은 running 통계 쓰고, weight 는 안 바뀌어. model 이 학습 중엔 더 나빠 보이다가 (dropout 이 일부러 방해) evaluate 때 점수 더 잘 나오는 이유가 이거야.

probability 에서 결정으로

predict() 는 class 별 probability (또는 logit) 를 (num_samples, num_classes) 모양으로 줘 — label 이 아니야. 예측 class 뽑으려면 class 축으로 argmax, Code 섹션처럼. NumPy 말고 keras.ops.argmax 쓴 거 봐 — backend-agnostic op 라 TensorFlow / PyTorch / JAX 어디서든 같은 줄이 돌아. 옛날 predict_classes 단축은 deprecated — argmax 가 명시적이고 portable 한 대체야. predict 는 내부에서 batch 처리하니 메모리보다 큰 dataset 던져도 안 터져. evaluate 는 학습 끝낸 후 의무 — 학습/validation 밖의 *test* set 에서 일반화 성능 확인.

Code

evaluate(), predict(), 그리고 argmax 로 class label·python
# Evaluate on test data
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f"Test accuracy: {test_acc:.4f}")

# Get predictions (probabilities)
predictions = model.predict(x_test)
# predictions.shape = (num_samples, num_classes)

# Convert probabilities to class labels
predicted_classes = keras.ops.argmax(predictions, axis=1)

External links

Exercise

MNIST 학습. test set 에 model.evaluate. test image 5 개에 model.predict, output 에 argmax, 정답 비교. 그 5 개의 정확도가 evaluate 숫자와 맞는지 확인.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.