Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

TensorFlow와 Python으로 CNN 모델 성능 평가하기

CNN 모델 평가 개요

합성곱 신경망(CNN)은 evaluate 메서드를 사용하여 손쉽게 평가할 수 있습니다. 이 메서드는 테스트 데이터와 테스트 레이블을 매개변수로 받아 모델의 손실(loss)과 정확도(accuracy)를 계산합니다.

평가에 앞서 matplotlib 라이브러리를 활용하면 학습 과정에서의 정확도 변화를 시각화하여 모델의 성능을 직관적으로 파악할 수 있습니다.

합성곱 신경망(CNN)의 활용 분야

합성곱 신경망은 이미지 인식과 같은 특정 유형의 문제에서 뛰어난 성능을 보여주는 딥러닝 모델입니다. 이미지 내의 공간적 특징을 효과적으로 추출하기 때문에 컴퓨터 비전 분야에서 널리 사용되고 있습니다.

Google Colaboratory 실행 환경

이 글의 코드는 Google Colaboratory(줄여서 Colab)에서 실행됩니다. Google Colab은 브라우저에서 바로 Python 코드를 실행할 수 있도록 도와주는 클라우드 기반 환경으로, 별도의 설정 없이 무료로 GPU(그래픽 처리 장치)를 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 구축되었습니다.

모델 평가 코드

print("Plotting accuracy versus epoch")
plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['val_accuracy'], label = 'val_accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.ylim([0.5, 1])
plt.legend(loc='lower right')
print("The model is being evaluated")
test_loss, test_acc = model.evaluate(test_images,test_labels, verbose=2)
print("The accuracy of the model is:")
print(test_acc)

코드 출처: https://www.tensorflow.org/tutorials/images/cnn

실행 결과

Plotting accuracy versus epoch
The model is being evaluated
313/313 - 3s - loss: 0.8884 - accuracy: 0.7053
The accuracy of the model is:
0.705299973487854

코드 설명

  • 정확도 시각화: 에포크(epoch)별 학습 정확도와 검증 정확도(val_accuracy)를 그래프로 그려 학습 진행 상황을 한눈에 확인할 수 있습니다.
  • matplotlib 활용: plt.plot() 함수를 사용하여 정확도 곡선을 그리고, x축에는 Epoch, y축에는 Accuracy를 표시합니다. y축 범위는 0.5부터 1까지로 설정하여 결과를 명확하게 보여줍니다.
  • 모델 평가: evaluate 메서드에 테스트 이미지와 테스트 레이블을 전달하면, 모델은 테스트 데이터에 대한 최종 손실과 정확도를 반환합니다.

위 예제에서 모델의 최종 정확도는 약 70.53%로 측정되었습니다. 이처럼 evaluate 메서드를 활용하면 학습된 CNN 모델이 실전 데이터에서 얼마나 잘 작동하는지 객관적으로 확인할 수 있습니다.