TensorFlow는 구글(Google)이 제공하는 머신러닝 프레임워크입니다. 오픈소스 기반으로 Python과 함께 사용되어 다양한 알고리즘, 딥러닝 애플리케이션 등을 구현할 수 있으며, 연구 목적과 실제 프로덕션 환경 모두에서 널리 활용됩니다.
Keras는 ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System)라는 프로젝트의 연구 과정에서 개발된 딥러닝 API로, Python으로 작성되었습니다. 높은 수준의 추상화를 제공하는 고수준(high-level) API로서, 생산성 있는 인터페이스를 통해 머신러닝 문제를 손쉽게 해결하도록 도와줍니다.
Keras는 TensorFlow 프레임워크 위에서 동작합니다. 빠른 실험을 지원하기 위해 만들어졌으며, 머신러닝 솔루션을 개발하고 캡슐화하는 데 필수적인 추상화와 빌딩 블록을 제공합니다. 또한 확장성이 뛰어나고 크로스 플랫폼을 지원하기 때문에 TPU나 GPU 클러스터에서도 실행할 수 있으며, 웹 브라우저나 모바일 환경에서 동작하도록 모델을 내보내는 것도 가능합니다.
Keras는 TensorFlow 패키지에 이미 포함되어 있으며, 아래 한 줄의 코드로 간단히 불러올 수 있습니다.
import tensorflow
from tensorflow import keras
이 글의 코드는 Google Colaboratory(Colab)에서 실행됩니다. Colab은 브라우저에서 바로 Python 코드를 실행할 수 있게 해주며, 별도의 설정이 필요 없고 GPU에 무료로 접근할 수 있다는 장점이 있습니다. Jupyter Notebook을 기반으로 구축되었습니다.
예제 코드
아래 코드는 학습된 모델의 가중치를 파일로 저장한 뒤, 새로운 모델 인스턴스를 생성하고 저장된 가중치를 다시 불러와 평가하는 전체 과정을 보여줍니다.
print("가중치를 저장합니다")
model.save_weights('./checkpoints/my_checkpoint')
print("새로운 모델 인스턴스를 생성합니다")
model = create_model()
print("기존 모델의 가중치를 복원합니다")
model.load_weights('./checkpoints/my_checkpoint')
print("모델을 평가합니다")
loss, acc = model.evaluate(test_images, test_labels, verbose=2)
print("복원된 모델 정확도: {:5.2f}%".format(100 * acc))코드 출처 — https://www.tensorflow.org/tutorials/keras/save_and_load
실행 결과
코드를 실행하면 가중치 저장, 새 모델 생성, 가중치 복원, 모델 평가 단계가 순서대로 진행되며, 마지막에 복원된 모델의 정확도가 콘솔에 출력됩니다. 가중치가 올바르게 복원되었다면 원래 모델과 거의 동일한 정확도 값이 표시됩니다.
코드 설명
- 새로운 모델의 가중치는 save_weights() 메서드를 사용하여 지정된 경로(checkpoints 디렉터리)에 체크포인트 형태로 저장됩니다.
- create_model() 메서드를 호출하여 가중치가 없는 새로운 모델 인스턴스를 하나 더 생성합니다.
- load_weights() 메서드를 통해 이전에 저장해 둔 기존 모델의 가중치를 복원합니다.
- 복원된 가중치가 새 모델에 적용되며, 이 모델을 대상으로 성능 평가가 진행됩니다.
- evaluate() 메서드를 사용해 테스트 이미지와 테스트 레이블을 기준으로 모델을 평가합니다.
- 평가 과정에서 손실(loss)과 정확도(accuracy) 값이 계산됩니다.
- 계산된 결과 값들은 콘솔에 출력되어 확인할 수 있습니다.
이처럼 save_weights()와 load_weights() 메서드만으로도 모델 전체 구조를 저장하지 않고 가중치만 선택적으로 저장하고 복원할 수 있습니다. 이는 체크포인트 관리나 전이 학습(transfer learning) 시 유용하게 활용됩니다.