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) 값을 계산합니다.
계산된 결과 값들이 콘솔에 출력됩니다.
이처럼 체크포인트에 저장된 가중치를 로드하면 학습을 처음부터 다시 수행하지 않고도 학습된 상태의 모델을 그대로 복원할 수 있습니다. 이는 학습 도중 중단된 훈련을 이어서 진행하거나, 학습이 완료된 모델을 배포 환경에서 재사용할 때 매우 유용하게 활용됩니다.