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

파이썬에서 Keras 함수형 API로 레이어를 생성하는 방법

TensorFlow는 구글(Google)이 제공하는 머신러닝 프레임워크입니다. 오픈소스 기반으로 파이썬과 함께 사용되어 알고리즘 구현, 딥러닝 애플리케이션 개발 등 다양한 용도로 활용되며, 연구 목적과 상용 환경 모두에서 널리 쓰입니다. 복잡한 수학 연산을 빠르게 처리할 수 있게 돕는 최적화 기법들도 갖추고 있습니다.

'tensorflow' 패키지는 아래 명령어 한 줄로 윈도우에 설치할 수 있습니다.

pip install tensorflow

Keras는 그리스어로 '뿔(horn)'을 의미하며, ONEIROS(Open-ended Neuro-Electronic Intelligent Robot Operating System)라는 연구 프로젝트의 일환으로 개발되었습니다. Keras는 파이썬으로 작성된 딥러닝 API로, 머신러닝 문제 해결을 돕는 생산성 높은 인터페이스를 제공하는 고수준(high-level) API입니다. TensorFlow 프레임워크 위에서 동작하며, 빠른 실험을 지원하기 위해 만들어졌습니다. 또한 머신러닝 솔루션을 개발하고 캡슐화하는 데 필수적인 추상화 계층과 빌딩 블록을 제공합니다.

Keras는 이미 TensorFlow 패키지 안에 포함되어 있으며, 다음 코드로 손쉽게 불러올 수 있습니다.

import tensorflow
from tensorflow import keras

Keras 함수형 API란?

Keras의 함수형 API(Functional API)는 순차형(Sequential) API로 만든 모델보다 훨씬 유연한 모델을 구축할 수 있게 해줍니다. 비선형(non-linear) 토폴로지를 가진 모델을 다룰 수 있고, 레이어를 공유하거나 여러 개의 입력과 출력을 처리하는 것도 가능합니다. 일반적으로 딥러닝 모델은 여러 레이어로 구성된 방향성 비순환 그래프(DAG, Directed Acyclic Graph) 형태인데, 함수형 API가 바로 이 레이어 그래프를 손쉽게 구성하도록 도와줍니다.

아래 코드는 Google Colaboratory에서 실행했습니다. Colab은 브라우저에서 바로 파이썬 코드를 실행할 수 있게 해주며, 별도의 설정 없이 GPU(그래픽 처리 장치)를 무료로 사용할 수 있다는 장점이 있습니다. Jupyter Notebook을 기반으로 만들어진 서비스입니다.

예제 코드

다음은 파이썬에서 Keras 함수형 API를 활용해 레이어를 생성하는 방법을 보여주는 코드입니다.

import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

inputs = keras.Input(shape=(784,))
print("Demonstration")
img_inputs = keras.Input(shape=(32, 32, 3))
print("Dimensions of input")
print(inputs.shape)
print("The type of input")
print(inputs.dtype)
print("Layers in the model")
dense = layers.Dense(64, activation="relu")
x = dense(inputs)
x = layers.Dense(64, activation="relu")(x)
outputs = layers.Dense(10)(x)
print("Model is being built")
model = keras.Model(inputs=inputs, outputs=outputs, name="mnist_model")
print("More information about the model")
model.summary()

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

실행 결과

파이썬에서 Keras 함수형 API로 레이어를 생성하는 방법

코드 설명

  • 입력 노드(input node)를 생성하고, 데이터의 형태(shape)를 784차원 벡터로 지정합니다.

  • 반환된 입력 객체에는 모델에 전달될 입력 데이터의 'shape'과 'dtype' 정보가 담겨 있습니다.

  • 입력(inputs)과 출력(outputs)을 지정하여 하나의 모델을 완성합니다.