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

Python TensorFlow에서 순차(Sequential) 모델을 언제 사용해야 할까? 예제로 살펴보기

순차(Sequential) 모델은 레이어가 단순히 한 줄로 쌓여 있는(stacked) 구조일 때 적합합니다. 이러한 스택에서는 각 레이어가 정확히 하나의 입력 텐서와 하나의 출력 텐서를 가집니다.

반면, 다음과 같은 경우에는 순차 모델이 적합하지 않습니다.

  • 모델에 여러 개의 입력 또는 출력이 필요한 경우
  • 레이어를 공유해야 하는 경우
  • 하나의 레이어가 여러 입력 또는 여러 출력을 가지는 경우
  • 비선형(non-linear) 아키텍처가 필요한 경우

TensorFlow란 무엇인가?

TensorFlow는 Google이 제공하는 머신러닝 프레임워크입니다. 오픈소스 프레임워크로, Python과 함께 사용하여 알고리즘, 딥러닝 애플리케이션 등을 구현할 수 있습니다. 연구 목적과 실제 프로덕션 환경 모두에서 활용되며, 복잡한 수학 연산을 빠르게 처리할 수 있도록 돕는 최적화 기법들을 갖추고 있습니다. 내부적으로 NumPy와 다차원 배열을 활용하며, 이 다차원 배열을 '텐서(tensor)'라고 부릅니다.

Keras란 무엇인가?

Keras는 ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System) 프로젝트 연구 과정에서 개발된 딥러닝 API로, Python으로 작성되었습니다. 머신러닝 문제 해결을 돕는 생산성 높은 인터페이스를 제공하는 고수준(high-level) API이며, TensorFlow 프레임워크 위에서 동작합니다.

Keras는 빠른 실험을 지원하도록 설계되었으며, 뛰어난 확장성과 크로스 플랫폼 기능을 갖추고 있습니다. 덕분에 TPU나 GPU 클러스터에서 실행할 수 있고, 웹 브라우저나 모바일 환경에서도 동작하도록 모델을 내보낼 수 있습니다.

Keras는 TensorFlow 패키지에 이미 포함되어 있으며, 다음 코드 한 줄로 손쉽게 사용할 수 있습니다.

import tensorflow
from tensorflow import keras

아래 예제 코드는 Google Colaboratory에서 실행했습니다. Google Colab은 브라우저에서 Python 코드를 실행할 수 있게 해주며, 별도의 설정 없이 GPU도 무료로 사용할 수 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.

예제: TensorFlow와 Keras로 순차 모델 정의하기

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

print("세 개의 레이어를 가진 순차 모델을 정의합니다")
model = keras.Sequential(
    [
        layers.Dense(2, activation="relu", name="layer_1"),
        layers.Dense(3, activation="relu", name="layer_2"),
        layers.Dense(4, name="layer_3"),
    ]
)
print("테스트 데이터로 모델을 호출합니다")
x = tf.ones((2, 2))
y = model(x)

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

실행 결과

A sequential model is being defined, that has three layers
The model is being called on test data
The layers are
[<tensorflow.python.keras.layers.core.Dense object at 0x7fe921aaf7b8>, <tensorflow.python.keras.layers.core.Dense object at 0x7fe921a6d898>, <tensorflow.python.keras.layers.core.Dense object at 0x7fe921a6dc18>]

코드 설명

  • 필요한 패키지들을 임포트하고 별칭(alias)을 지정합니다.
  • Keras의 'Sequential' 메서드를 사용하여 순차 모델을 생성합니다.
  • 생성된 모델을 테스트 데이터에 호출(call)하여 가중치를 초기화합니다.
  • 모델을 구성하는 레이어들의 세부 정보가 콘솔에 출력됩니다.

마무리

정리하면, 순차 모델은 입력에서 출력까지 레이어가 순서대로 하나씩 연결되는 단순한 구조의 신경망에 가장 적합합니다. 다중 입력·출력, 레이어 공유, 비선형 구조 등이 필요하다면 함수형 API(Functional API)나 모델 서브클래싱(Model Subclassing) 방식을 사용하는 것이 좋습니다.