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

Python과 Keras로 복원된 모델 평가하기: 저장·불러오기 후 성능 검증 방법

TensorFlow는 Google에서 제공하는 머신러닝 프레임워크입니다. 오픈소스로 공개되어 있으며, Python과 함께 사용하여 알고리즘 구현, 딥러닝 애플리케이션 개발 등 다양한 작업에 활용됩니다. 연구 목적과 실제 서비스(프로덕션) 목적 모두에서 널리 쓰이고 있으며, 복잡한 수학 연산을 빠르게 처리할 수 있도록 돕는 여러 최적화 기법을 내장하고 있습니다.

'tensorflow' 패키지는 Windows 환경에서 아래 명령어 한 줄로 간단히 설치할 수 있습니다.

pip install tensorflow

Keras는 ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System)라는 프로젝트의 연구 과정에서 개발되었습니다. Python으로 작성된 딥러닝 API로, 머신러닝 문제를 효율적으로 해결할 수 있도록 생산성 높은 인터페이스를 제공하는 고수준(high-level) API입니다.

Keras는 TensorFlow 프레임워크 위에서 동작하며, 빠른 실험과 반복을 지원하도록 설계되었습니다. 머신러닝 솔루션을 개발하고 캡슐화하는 데 필수적인 추상화 계층과 빌딩 블록을 제공합니다. 또한 확장성이 뛰어나고 크로스 플랫폼을 지원하기 때문에 TPU나 GPU 클러스터에서도 실행할 수 있으며, 웹 브라우저나 모바일 기기에서 동작하도록 모델을 내보내는 것도 가능합니다.

Keras는 TensorFlow 패키지 안에 이미 포함되어 있으므로, 아래 코드만으로 바로 불러와 사용할 수 있습니다.

import tensorflow
from tensorflow import keras

여기서는 Google Colaboratory를 사용해 코드를 실행합니다. Google Colab(Colaboratory)은 브라우저에서 바로 Python 코드를 실행할 수 있게 해주며, 별도의 환경 설정 없이 GPU에 무료로 접근할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다. 다음은 전체 코드입니다.

예제

print("복원된 모델을 평가합니다")
loss, acc = new_model.evaluate(test_images, test_labels, verbose=2)
print('복원된 모델의 정확도: {:5.3f}%'.format(100 * acc))
print("예측을 수행합니다. 예측 결과의 차원은 다음과 같습니다")
print(new_model.predict(test_images).shape)
print("새로운 모델 인스턴스를 생성합니다")

model = create_model()

print("모델을 학습 데이터에 학습시킵니다")
model.fit(train_images, train_labels, epochs=7)

코드 출처 - https://www.tensorflow.org/tutorials/keras/save_and_load

출력 결과

Python과 Keras로 복원된 모델 평가하기: 저장·불러오기 후 성능 검증 방법

Python과 Keras로 복원된 모델 평가하기: 저장·불러오기 후 성능 검증 방법

코드 설명

  • 저장해 두었던 모델 파일을 불러온 뒤, 'evaluate' 메서드를 사용해 복원된 모델을 평가합니다.
  • evaluate 메서드는 테스트 데이터에 대한 손실(loss)과 정확도(accuracy)를 반환하며, verbose=2 옵션을 지정하면 진행 상황 없이 간결한 한 줄 요약만 출력됩니다.
  • 평가된 정확도와 손실 값은 콘솔에 표시되어, 저장 전 원래 모델의 성능과 비교할 수 있습니다.
  • 'predict' 메서드를 호출해 테스트 이미지에 대한 예측을 수행하고, 예측 결과 배열의 차원(shape)을 콘솔에 출력합니다.
  • 'create_model' 메서드를 통해 새로운 모델 인스턴스를 생성합니다.
  • 생성된 모델은 'fit' 메서드로 학습 데이터에 학습되며, epochs=7로 설정했기 때문에 전체 학습 데이터셋을 총 7번 반복해 학습합니다.