순차적(Sequential) 모델이란?
순차적 모델은 여러 층(layer)이 단순한 스택 형태로 쌓여 있을 때 적합한 모델입니다. 이 스택 구조에서는 각 층이 정확히 하나의 입력 텐서와 하나의 출력 텐서를 가집니다. 반면 다음과 같은 경우에는 순차적 모델이 적합하지 않습니다.
- 모델에 여러 개의 입력 또는 출력이 필요한 경우
- 층(layer)을 재사용하거나 공유해야 하는 경우
- 개별 층 자체가 여러 입력 또는 출력을 가져야 하는 경우
- 비선형(non-linear) 아키텍처가 필요한 경우
TensorFlow 소개
TensorFlow는 Google이 제공하는 머신러닝 프레임워크입니다. 오픈소스 기반으로 Python과 함께 사용되어 알고리즘, 딥러닝 애플리케이션 등을 구현할 수 있으며, 연구 목적과 상용 환경 모두에서 널리 활용됩니다. 복잡한 수학 연산을 빠르게 처리할 수 있는 최적화 기법을 갖추고 있습니다.
이러한 성능은 NumPy와 다차원 배열을 활용하기 때문에 가능합니다. 이 다차원 배열을 '텐서(tensor)'라고 부릅니다. TensorFlow는 딥러닝 신경망 작업을 지원하며, 뛰어난 확장성을 제공하고 다양한 인기 데이터셋을 함께 제공합니다. GPU 연산을 활용하고 리소스 관리를 자동화하며, 방대한 머신러닝 라이브러리와 잘 정비된 문서를 갖추고 있습니다. 또한 딥러닝 모델을 실행하고 학습시키며, 데이터셋의 특성을 예측하는 애플리케이션을 만들 수도 있습니다.
Windows 환경에서는 아래 명령어 한 줄로 tensorflow 패키지를 설치할 수 있습니다.
pip install tensorflow
텐서(Tensor)의 세 가지 속성
텐서는 TensorFlow에서 사용되는 핵심 데이터 구조로, 데이터 흐름 그래프(Data Flow Graph)의 엣지(edge)를 연결하는 역할을 합니다. 텐서는 본질적으로 다차원 배열 또는 리스트이며, 다음 세 가지 주요 속성으로 식별할 수 있습니다.
- 랭크(Rank) — 텐서의 차원 수를 나타냅니다. 텐서의 차수(order) 또는 정의된 차원의 개수로 이해할 수 있습니다.
- 타입(Type) — 텐서 요소에 연결된 데이터 타입을 나타냅니다. 1차원, 2차원 또는 n차원 형태일 수 있습니다.
- 쉐이프(Shape) — 행과 열의 개수를 함께 나타낸 값입니다.
Keras란 무엇인가?
Keras는 그리스어로 '뿔(horn)'을 의미합니다. ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System) 프로젝트의 일환으로 개발되었으며, Python으로 작성된 딥러닝 API입니다. 생산성 높은 인터페이스를 갖춘 고수준(high-level) API로, 머신러닝 문제 해결을 돕습니다. TensorFlow 프레임워크 위에서 동작하며, 빠른 실험을 지원하기 위해 설계되었습니다. 머신러닝 솔루션을 개발하고 캡슐화하는 데 필수적인 추상화 계층과 빌딩 블록을 제공합니다.
Keras는 이미 TensorFlow 패키지에 포함되어 있으며, 아래 코드로 불러올 수 있습니다.
import tensorflow
from tensorflow import keras
Google Colaboratory에서 실행하기
이 글의 예제 코드는 Google Colaboratory(Colab)에서 실행됩니다. Colab은 브라우저에서 바로 Python 코드를 실행할 수 있게 해주며, 별도의 설정이 필요 없고 GPU를 무료로 사용할 수 있다는 장점이 있습니다. Jupyter Notebook을 기반으로 구축되었습니다.
예제: 순차적 모델 생성하기
이제 TensorFlow와 Keras를 사용해 순차적 모델을 만들고, 층을 하나씩 추가하는 예제를 살펴보겠습니다.
print("A sequential model is being created")
model = keras.Sequential()
model.add(layers.Dense(2, activation="relu"))
model.add(layers.Dense(3, activation="relu"))
model.add(layers.Dense(4))
print("Dense layers have been added to the model")코드 출처 — https://www.tensorflow.org/guide/keras/sequential_model
실행 결과
A sequential model is being created
Dense layers have been added to the model
코드 설명
- 이 코드는 Python과 Keras를 사용해 순차적 모델을 생성하고 층을 추가하는 또 다른 방법을 보여줍니다.
- 먼저 변수에
Sequential() 메서드 호출 결과를 할당하여 빈 모델 객체를 만듭니다. - 그런 다음 해당 변수에 대해
add()메서드를 호출하여 모델에 Dense 층을 하나씩 추가합니다. 각 Dense 층은 ReLU 활성화 함수를 사용하거나, 마지막 층처럼 활성화 함수 없이 선형 출력을 반환할 수도 있습니다. - 모든 층이 추가되면, 진행 상황을 알리는 메시지가 콘솔에 출력됩니다.
이처럼 keras.Sequential()로 모델을 초기화한 뒤 add() 메서드를 반복 호출하면, 원하는 깊이의 신경망을 점진적으로 구성할 수 있습니다. 이 방식은 구조가 단순한 모델을 빠르게 프로토타이핑할 때 특히 유용합니다.