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

Keras를 활용한 Python 순차 모델(Sequential Model) 컴파일 방법 완벽 가이드

Keras는 그리스어로 '뿔(horn)'이라는 의미를 가지고 있습니다. Keras는 ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System)라는 프로젝트의 연구 과정에서 개발되었으며, Python으로 작성된 딥러닝 API입니다. 높은 수준의 추상화를 제공하는 고급(high-level) API로서, 머신러닝 문제를 효율적으로 해결할 수 있도록 생산적인 인터페이스를 지원합니다.

Keras란 무엇인가?

Keras는 구글이 제공하는 머신러닝 프레임워크인 Tensorflow 위에서 동작합니다. 빠른 실험과 프로토타이핑을 돕기 위해 설계되었으며, 머신러닝 솔루션을 개발하고 캡슐화하는 데 필요한 핵심 추상화와 빌딩 블록들을 제공합니다.

Keras는 뛰어난 확장성과 크로스 플랫폼 호환성을 갖추고 있어, TPU나 GPU 클러스터에서도 실행할 수 있습니다. 또한 학습된 Keras 모델은 웹 브라우저나 모바일 기기에서 실행되도록 내보낼 수도 있습니다.

Keras는 이미 Tensorflow 패키지에 포함되어 있어, 아래 코드 한 줄로 간단히 불러올 수 있습니다.

import tensorflow
from tensorflow import keras

Tensorflow는 구글에서 제공하는 오픈소스 머신러닝 프레임워크로, Python과 함께 사용하여 다양한 알고리즘과 딥러닝 애플리케이션을 구현할 수 있습니다. 연구 목적뿐만 아니라 실제 운영 환경(production)에서도 널리 활용됩니다.

함수형 API(Functional API)의 특징

Keras의 함수형 API는 순차적(sequential) API로 만든 모델보다 더 유연한 모델을 생성할 수 있도록 도와줍니다. 함수형 API를 사용하면 비선형(non-linear) 토폴로지를 가진 모델을 다룰 수 있고, 레이어를 공유하거나 여러 개의 입력과 출력을 처리하는 것도 가능합니다.

일반적으로 딥러닝 모델은 여러 개의 레이어로 구성된 방향성 비순환 그래프(DAG, Directed Acyclic Graph) 형태를 띠며, 함수형 API는 바로 이 레이어 그래프를 손쉽게 구축할 수 있게 해줍니다.

Google Colaboratory 환경

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

순차 모델 컴파일 예제

아래는 Keras로 생성된 순차 모델을 컴파일하는 코드입니다.

print("Model is being compiled")
model.compile(
    optimizer=keras.optimizers.RMSprop(1e-3),
    loss=[
        keras.losses.BinaryCrossentropy(from_logits=True),
        keras.losses.CategoricalCrossentropy(from_logits=True),
    ],
    loss_weights=[1.0, 0.2],
)

코드 출처 — https://www.tensorflow.org/guide/keras/functional

실행 결과

Model is being compiled

코드 설명

  • 생성된 모델은 'compile' 메서드를 사용하여 컴파일할 수 있습니다.
  • 컴파일 과정에서 각 출력(output)마다 서로 다른 손실 함수(loss)를 지정할 수 있습니다.
  • 각 손실에 서로 다른 가중치(weight)를 부여할 수 있으며, 이를 통해 전체 학습 손실(total training loss)을 조절할 수 있습니다.