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

Keras를 활용해 체크포인트에서 가중치를 로드하고 모델을 재평가하는 방법

TensorFlow란 무엇인가?

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

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

pip install tensorflow

텐서(Tensor)는 TensorFlow에서 사용되는 핵심 데이터 구조로, '데이터 흐름 그래프(Data Flow Graph)'의 엣지(edge)를 연결하는 역할을 합니다. 텐서는 다차원 배열 또는 리스트라고 할 수 있으며, 다음 세 가지 주요 속성으로 식별할 수 있습니다.

  • 랭크(Rank) - 텐서의 차원 수를 나타냅니다. 텐서의 차수 또는 정의된 차원의 개수로 이해할 수 있습니다.

  • 타입(Type) - 텐서 요소와 연관된 데이터 타입을 나타냅니다. 1차원, 2차원 또는 n차원 형태일 수 있습니다.

  • 형태(Shape) - 행과 열의 개수를 함께 나타내는 속성입니다.

Keras란 무엇인가?

Keras는 그리스어로 '뿔(horn)'을 의미하는 이름으로, ONEIROS(개방형 신경 전자 지능형 로봇 운영체제) 프로젝트의 연구 과정에서 개발되었습니다. Python으로 작성된 딥러닝 API이며, 직관적이고 생산적인 인터페이스를 통해 머신러닝 문제 해결을 돕는 고수준(high-level) API입니다. TensorFlow 프레임워크 위에서 동작하며, 빠르게 실험할 수 있도록 설계되었습니다. 또한 머신러닝 솔루션을 개발하고 캡슐화하는 데 필수적인 추상화와 빌딩 블록을 제공합니다.

Keras는 TensorFlow 패키지에 이미 포함되어 있으므로, 아래 코드 한 줄로 손쉽게 가져올 수 있습니다.

import tensorflow
from tensorflow import keras

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

예제

print("가중치를 로드합니다")
model.load_weights(checkpoint_path)

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

출력 결과

가중치를 로드합니다
모델을 재평가합니다
32/32 - 0 - loss:0.4066 - sparse_categorical_accuracy:0.8740
복원된 모델의 정확도: 87.400%

코드 설명

  • 새로 생성된 모델 객체에 체크포인트에 저장된 가중치가 매핑(적용)됩니다.

  • 'evaluate' 메서드를 사용하여 모델이 새로운 데이터(테스트 이미지, 테스트 레이블)에서 얼마나 잘 수행되는지 확인합니다.

  • 모델 평가 과정에서 손실(loss) 값과 정확도(accuracy)가 함께 계산됩니다.

  • 계산된 손실과 정확도 결과가 콘솔에 출력되며, 이를 통해 체크포인트에서 복원한 모델의 성능을 검증할 수 있습니다.