본문 바로가기
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.evaluate(x_test, y_test)는 정답이 있는 데이터에서 모델이 얼마나 잘하는지를 재. compile()에 지정한 손실 함수와 평가지표를 계산해 숫자로 돌려주지. 반면 model.predict(x)는 정답 없이 입력만 받아 모델의 원시 출력을 내놓아. 성능을 채점할 때는 evaluate(), 실제 입력에 대한 판단을 얻을 때는 predict()를 쓰는 셈이야.

둘 다 추론 모드로 실행돼. Dropout은 꺼지고 BatchNormalization은 누적된 통계를 사용하며, 가중치는 바뀌지 않아. 학습 중에는 Dropout이 일부 연결을 일부러 끊으므로, 같은 모델이 평가할 때 더 좋은 점수를 보일 수도 있어.

출력값을 최종 결정으로 바꾸기

predict()가 분류 모델에서 반환하는 값은 보통 클래스별 확률이나 로짓이며 모양은 (num_samples, num_classes)야. 아직 클래스 번호가 아니므로 클래스 축에 argmax를 적용해야 해. 코드에서는 NumPy 대신 keras.ops.argmax를 썼어. 백엔드에 독립적인 연산이라 TensorFlow, PyTorch, JAX에서 같은 코드를 유지할 수 있지. 예전의 predict_classes는 폐기됐으니 명시적인 argmax를 사용해. predict()는 입력을 내부적으로 배치 처리하고, evaluate()는 학습과 검증에 쓰지 않은 시험 세트에서 일반화 성능을 확인하는 마지막 관문이야.

Code

evaluate(), predict(), argmax로 클래스 판정하기·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 모델을 학습한 뒤 시험 세트 전체를 model.evaluate()로 평가해. 시험 이미지 5개에는 model.predict()와 argmax를 적용해 정답과 비교하고, 이 작은 표본의 정확도가 전체 평가값과 왜 다를 수 있는지 설명해.

Progress

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

댓글 0

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

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