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

TensorFlow로 IMDB 데이터셋의 정확도와 손실 시각화하기 — Python 에포크별 그래프 작성 가이드

TensorFlow는 Google이 제공하는 대표적인 머신러닝 프레임워크입니다. 오픈소스로 공개되어 있으며, Python과 함께 사용해 다양한 알고리즘과 딥러닝 애플리케이션을 구현할 수 있습니다. 연구 목적뿐 아니라 실제 프로덕션 환경에서도 널리 활용되고 있습니다.

IMDB 데이터셋이란?

'IMDB' 데이터셋은 5만 건이 넘는 영화 리뷰를 담고 있는 데이터셋으로, 주로 자연어 처리(NLP) 관련 작업에서 활용됩니다. 감성 분석이나 텍스트 분류 모델을 학습시키는 데 적합합니다.

이 글의 코드는 Google Colaboratory에서 실행하는 것을 기준으로 합니다. Google Colab은 별도의 환경 설정 없이 브라우저에서 바로 Python 코드를 실행할 수 있게 해주며, GPU(그래픽 처리 장치)에 무료로 접근할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 구축되었습니다.

정확도와 손실 시각화 코드

다음은 IMDB 데이터셋에서 시간(에포크)에 따른 정확도와 손실을 시각화하는 플롯을 생성하는 코드입니다.

history_dict = history.history
history_dict.keys()
acc = history_dict['binary_accuracy']
val_acc = history_dict['val_binary_accuracy']
loss = history_dict['loss']
val_loss = history_dict['val_loss']

epochs = range(1, len(acc) + 1)

plt.plot(epochs, loss, 'ro', label='Training loss')
plt.plot(epochs, val_loss, 'b', label='Validation loss')
plt.title('Training and validation loss with respect to time')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()

plt.show()

코드 출처 — https://www.tensorflow.org/tutorials/keras/text_classification

실행 결과

TensorFlow로 IMDB 데이터셋의 정확도와 손실 시각화하기 — Python 에포크별 그래프 작성 가이드

코드 설명

  • 모델에 데이터를 학습시킨(fit) 후에는 실제 값과 예측 값을 비교해야 모델의 성능을 제대로 평가할 수 있습니다.

  • 이를 확인하는 가장 좋은 방법은 바로 시각화입니다.

  • 따라서 'matplotlib' 라이브러리를 사용하여 훈련(training)과 검증(validation) 과정에서 발생한 손실(loss)을 시간의 흐름에 따라 그래프로 나타냅니다.

  • 여기서 x축은 모델이 데이터를 학습하는 데 거친 단계 수, 즉 에포크(epoch) 수를 의미합니다.

훈련 손실은 빨간색 점('ro')으로, 검증 손실은 파란색 선('b')으로 표시되어 두 지표의 변화 추이를 한눈에 비교할 수 있습니다. 이러한 그래프를 통해 과대적합(overfitting) 여부나 추가 학습의 필요성을 쉽게 판단할 수 있습니다.