TensorFlow는 구글(Google)이 제공하는 머신러닝 프레임워크입니다. 오픈소스 기반으로 Python과 함께 사용되어 알고리즘 구현, 딥러닝 애플리케이션 개발 등 다양한 작업에 활용되며, 연구 목적과 상용 환경 모두에서 널리 쓰이고 있습니다.
Keras는 그리스어로 '뿔(horn)'을 의미합니다. Keras는 ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System, 개방형 신경전자 지능형 로봇 운영체제) 프로젝트의 연구 과정에서 개발되었습니다. Keras는 Python으로 작성된 딥러닝 API로, 머신러닝 문제 해결을 돕는 생산성 높은 인터페이스를 갖춘 고수준(high-level) API입니다.
Keras는 TensorFlow 프레임워크 위에서 동작하며, 빠른 실험을 지원하도록 설계되었습니다. 또한 머신러닝 솔루션을 개발하고 캡슐화하는 데 필수적인 추상화 계층과 빌딩 블록을 제공합니다.
Keras는 확장성이 뛰어나고 크로스 플랫폼을 지원합니다. 따라서 TPU나 GPU 클러스터에서 실행할 수 있으며, Keras 모델을 웹 브라우저나 모바일 기기에서 구동할 수 있도록 내보내는 것도 가능합니다.
Keras는 이미 TensorFlow 패키지에 포함되어 있으며, 아래 코드 한 줄로 불러올 수 있습니다.
import tensorflow
from tensorflow import keras
이 글의 예제 코드는 Google Colaboratory에서 실행됩니다. Google Colab(또는 Colaboratory)은 브라우저에서 Python 코드를 실행할 수 있도록 도와주는 서비스로, 별도의 설정 없이 GPU(그래픽 처리 장치)를 무료로 사용할 수 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다. 아래는 해당 코드 스니펫입니다.
예제
print("사전 훈련된 가중치가 적용된 합성곱(convolutional) 모델을 로드합니다")
base_model = keras.applications.Xception(
weights='imagenet',
include_top=False,
pooling='avg')
print("모델을 동결(freeze)합니다")
base_model.trainable = False
print("Sequential 모델을 사용해 베이스 모델 위에 학습 가능한 분류기를 추가합니다")
model = keras.Sequential([
base_model,
layers.Dense(1000),
])
print("모델을 컴파일합니다")
print("모델을 테스트 데이터에 학습시킵니다")
model.compile(...)
model.fit(...)코드 출처 − https://www.tensorflow.org/guide/keras/sequential_model
출력 결과
사전 훈련된 가중치가 적용된 합성곱(convolutional) 모델을 로드합니다
Downloading data from https://storage.googleapis.com/tensorflow/kerasapplications/xception/xception_weights_tf_dim_ordering_tf_kernels_notop.h5
83689472/83683744 [==============================] - 1s 0us/step
모델을 동결(freeze)합니다
Sequential 모델을 사용해 베이스 모델 위에 학습 가능한 분류기를 추가합니다
모델을 컴파일합니다
모델을 테스트 데이터에 학습시킵니다
설명
Sequential 모델 스택을 활용하면 사전 훈련된 모델을 기반으로 분류 레이어를 초기화할 수 있습니다. 이는 전이 학습(transfer learning)의 대표적인 방식입니다.
모델 구성이 완료되면 compile() 메서드를 호출하여 모델을 컴파일합니다. 이 단계에서 옵티마이저, 손실 함수, 평가 지표 등을 설정하게 됩니다.
컴파일이 끝나면 fit() 메서드를 통해 모델을 학습 데이터에 맞출 수 있습니다. 사전 훈련된 베이스 모델은 동결되어 있으므로, 새로 추가된 분류기 레이어만 학습됩니다.