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

TensorFlow와 일리아드 데이터셋으로 새로운 테스트 데이터의 예측 성능을 검증하는 방법

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

TensorFlow에는 복잡한 수학 연산을 빠르게 처리할 수 있는 최적화 기법이 내장되어 있습니다. 이는 내부적으로 NumPy와 다차원 배열을 활용하기 때문인데, 이러한 다차원 배열을 '텐서(tensor)'라고 부릅니다.

TensorFlow의 주요 특징

  • 딥러닝 신경망(Deep Neural Network) 작업을 완벽하게 지원합니다.
  • 높은 확장성을 갖추고 있으며, 다양한 인기 데이터셋을 기본 제공합니다.
  • GPU 연산을 활용하고 리소스 관리를 자동화합니다.
  • 방대한 머신러닝 라이브러리를 포함하고 있으며, 문서화와 커뮤니티 지원이 잘 되어 있습니다.

텐서(Tensor)는 TensorFlow에서 사용되는 핵심 데이터 구조로, 흐름도(flow diagram)에서 각 노드를 연결하는 역할을 합니다. 이 흐름도를 '데이터 플로우 그래프(Data Flow Graph)'라고 하며, 텐서는 본질적으로 다차원 배열 또는 리스트에 해당합니다.

일리아드 데이터셋 소개

이번 예제에서는 일리아드(Illiad) 데이터셋을 사용합니다. 이 데이터셋에는 윌리엄 카우퍼(William Cowper), 에드워드 더비 백작(Earl of Derby), 새뮤얼 버틀러(Samuel Butler) 세 번역가가 번역한 텍스트 데이터가 담겨 있습니다. 모델은 한 줄의 텍스트가 주어졌을 때 해당 텍스트를 번역한 사람이 누구인지 식별하도록 학습됩니다.

사용된 텍스트 파일은 사전에 전처리 과정을 거쳤습니다. 여기에는 문서의 머리글과 바닥글, 행 번호, 챕터 제목을 제거하는 작업이 포함됩니다.

아래 코드는 Google Colaboratory에서 실행되었습니다. Colab은 브라우저에서 Python 코드를 실행할 수 있게 해주며, 별도의 설정 없이 GPU에 무료로 접근할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.

예제 코드

다음은 새로운 데이터로 모델을 테스트하는 코드입니다.

print("새로운 데이터로 모델 테스트하기")
inputs = [
    "the allies, and his armour flashed about him so that he seemed to all",
    "And with loud clangor of his arms he fell.",
    "Join'd to th' Ionians with their flowing robes,",
]
print("predict 메서드 호출")
predicted_scores = export_model.predict(inputs)
predicted_labels = tf.argmax(predicted_scores, axis=1)
for input, label in zip(inputs, predicted_labels):
    print("입력 문장 : ", input)
    print("예측된 레이블 : ", label.numpy())

코드 출처: https://www.tensorflow.org/tutorials/load_data/text

실행 결과

Testing the model on new data
The predict method is being called
The question is : the allies, and his armour flashed about him so that he seemed to all
The predicted label is : 2
The question is : And with loud clangor of his arms he fell.
The predicted label is : 0
The question is : Join'd to th' Ionians with their flowing robes,
The predicted label is : 1

코드 설명

  • 데이터 컴파일과 학습 데이터 피팅(fitting)이 완료된 후, 모델을 한 번도 본 적 없는 새로운 데이터로 테스트합니다.
  • 테스트 데이터에 대해 'predict' 메서드를 호출합니다.
  • 예측된 레이블 샘플 몇 개를 해당 입력 문장과 함께 화면에 출력합니다.