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

TensorFlow에서 최신 체크포인트를 로드해 모델을 복원하고 다시 평가하는 방법

TensorFlow는 구글(Google)이 제공하는 머신러닝 프레임워크로, 오픈소스 기반이며 Python과 함께 사용하여 알고리즘, 딥러닝 애플리케이션 등을 구현할 수 있습니다. 연구 목적과 실제 프로덕션 환경 모두에서 활용되며, 복잡한 수학적 연산을 빠르게 처리할 수 있는 최적화 기법을 갖추고 있습니다. 이는 내부적으로 NumPy와 다차원 배열을 사용하기 때문인데, 이 다차원 배열을 '텐서(tensor)'라고 부릅니다. TensorFlow는 딥 신경망 작업을 폭넓게 지원하며, 뛰어난 확장성과 함께 다양한 인기 데이터셋도 제공합니다.

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

pip install tensorflow

Keras란 무엇인가?

Keras는 ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System) 프로젝트의 연구 과정에서 개발된 딥러닝 API로, Python으로 작성되었습니다. 높은 수준의 추상화를 제공하는 고수준(high-level) API로, 생산적인 인터페이스를 통해 머신러닝 문제를 손쉽게 해결할 수 있도록 돕습니다. Keras는 TensorFlow 프레임워크 위에서 동작하며, 빠른 실험과 반복을 지원하기 위해 만들어졌습니다. 머신러닝 솔루션을 개발하고 캡슐화하는 데 필수적인 추상화와 빌딩 블록을 제공합니다.

Keras 역시 확장성이 뛰어나고 크로스 플랫폼을 지원합니다. 즉, TPU나 GPU 클러스터에서 실행할 수 있으며, 웹 브라우저나 모바일 기기에서 동작하도록 모델을 내보낼 수도 있습니다. Keras는 이미 TensorFlow 패키지에 포함되어 있으며, 아래 코드로 불러올 수 있습니다.

import tensorflow
from tensorflow import keras

이 글의 예제 코드는 Google Colaboratory(Colab)에서 실행됩니다. Google Colab은 브라우저에서 Python 코드를 실행할 수 있게 해주며, 별도의 설정이 필요 없고 GPU를 무료로 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 구축되었습니다.

예제: 저장된 체크포인트 로드 후 모델 재평가

아래 코드는 새로운 모델 인스턴스를 생성한 뒤, 이전에 저장해 둔 가중치(최신 체크포인트)를 로드하고, 해당 모델을 테스트 데이터로 다시 평가하는 과정을 보여줍니다.

print("새로운 모델 인스턴스를 생성합니다")
model = create_model()
print("이전에 저장된 가중치를 로드합니다")
model.load_weights(latest)
print("모델을 다시 평가합니다")
loss, acc = model.evaluate(test_images, test_labels, verbose=2)
print("복원된 모델의 정확도: {:5.3f}%".format(100 * acc))

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

실행 결과

A new model instance is created
The previously saved weights are loaded
The model is being re-evaluated
32/32 - 0s - loss: 0.4828 - sparse_categorical_accuracy: 0.8770
This is the restored model, with accuracy:87.700%

코드 설명

  • 'create_model' 메서드를 사용해 새로운 모델 인스턴스를 다시 생성합니다.

  • 'load_weights' 메서드를 통해 이전에 저장해 둔 가중치(최신 체크포인트)를 해당 인스턴스에 불러옵니다.

  • 'evaluate' 메서드를 사용해 새로운 모델을 테스트 데이터셋으로 평가합니다.

  • 평가 과정에서 손실(loss)과 정확도(accuracy) 값을 계산합니다.

  • 계산된 결과 값들이 콘솔에 출력됩니다.

이처럼 체크포인트에 저장된 가중치를 로드하면 학습을 처음부터 다시 수행하지 않고도 학습된 상태의 모델을 그대로 복원할 수 있습니다. 이는 학습 도중 중단된 훈련을 이어서 진행하거나, 학습이 완료된 모델을 배포 환경에서 재사용할 때 매우 유용하게 활용됩니다.