TensorFlow는 구글(Google)이 제공하는 머신러닝 프레임워크입니다. 오픈소스로 공개되어 있으며, 파이썬과 함께 사용해 알고리즘, 딥러닝 애플리케이션 등을 구현할 수 있습니다. 학술 연구부터 실제 서비스 운영 환경까지 폭넓게 활용됩니다.
'tensorflow' 패키지는 윈도우 환경에서 아래 명령어 한 줄로 간단히 설치할 수 있습니다.
pip install tensorflow
텐서(Tensor)는 TensorFlow에서 사용되는 핵심 데이터 구조입니다. 데이터 흐름 다이어그램의 노드를 잇는 엣지(edge) 역할을 하며, 이 다이어그램을 '데이터 흐름 그래프(Data Flow Graph)'라고 부릅니다. 텐서는 쉽게 말해 다차원 배열 또는 리스트라고 할 수 있습니다.
Keras란 무엇인가?
Keras는 파이썬으로 작성된 딥러닝 API입니다. 생산성 높은 인터페이스를 갖춘 고수준(High-level) API로, 머신러닝 문제를 손쉽게 해결할 수 있도록 돕습니다. TensorFlow 프레임워크 위에서 동작하며, 빠른 실험과 반복 작업에 최적화되어 있습니다. 또한 머신러닝 솔루션을 개발하고 캡슐화하는 데 필요한 핵심 추상화 계층과 빌딩 블록을 제공합니다.
Keras는 이미 TensorFlow 패키지에 포함되어 있으므로, 아래 두 줄의 코드만으로 바로 사용할 수 있습니다.
import tensorflow from tensorflow import keras
함수형 API(Functional API)의 장점
Keras 함수형 API는 시퀀셜 API(Sequential API)로 만든 모델보다 훨씬 유연한 구조의 모델을 생성할 수 있습니다. 구체적으로 다음과 같은 특징이 있습니다.
- 비선형(non-linear) 토폴로지를 가진 모델을 다룰 수 있습니다.
- 여러 모델 간에 레이어를 공유할 수 있습니다.
- 다중 입력(multiple inputs)과 다중 출력(multiple outputs)을 지원합니다.
일반적인 딥러닝 모델은 여러 레이어로 구성된 방향성 비순환 그래프(DAG, Directed Acyclic Graph) 형태이며, 함수형 API는 이 레이어 그래프를 직관적으로 구축하는 데 큰 도움이 됩니다.
실행 환경: Google Colaboratory
이 글의 코드는 Google Colaboratory(Google Colab)에서 실행했습니다. Google Colab은 브라우저에서 바로 파이썬 코드를 실행할 수 있는 환경으로, 별도의 설정 없이 무료로 GPU(그래픽 처리 장치)까지 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.
예제 코드
class CustomDense(layers.Layer):
def __init__(self, units=32):
super(CustomDense, self).__init__()
self.units = units
def build(self, input_shape):
self.w = self.add_weight(
shape=(input_shape[-1], self.units),
initializer="random_normal",
trainable=True,
)
self.b = self.add_weight(
shape=(self.units,), initializer="random_normal", trainable=True
)
def call(self, inputs):
return tf.matmul(inputs, self.w) + self.b
inputs = keras.Input((4,))
outputs = CustomDense(10)(inputs)
print("Keras model is being generated")
model = keras.Model(inputs, outputs)코드 출처 − https://www.tensorflow.org/guide/keras/functional
실행 결과
Keras model is being generated
코드 상세 설명
Keras에는 다양한 내장 레이어가 포함되어 있으며, 대표적으로 'Conv1D', 'Conv2D', 'Conv2DTranspose' 등이 있습니다.
'call' 메서드는 해당 레이어가 입력 데이터에 대해 수행하는 실제 연산을 정의합니다.
'build' 메서드는 레이어가 사용할 가중치(weight)를 생성하는 역할을 담당합니다.
위 과정을 거쳐 최종적으로 Keras 모델이 성공적으로 생성됩니다.