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

Python에서 Keras를 활용한 사전 훈련된 모델 사용 방법


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() 메서드를 통해 모델을 학습 데이터에 맞출 수 있습니다. 사전 훈련된 베이스 모델은 동결되어 있으므로, 새로 추가된 분류기 레이어만 학습됩니다.