move84

TensorFlow Keras API 개요 본문

머신러닝

TensorFlow Keras API 개요

move84 2025. 4. 15. 07:25
반응형

TensorFlow의 Keras API는 머신러닝 모델을 구축하고 훈련하는 데 사용되는 고수준 인터페이스다. Keras는 사용 편의성에 중점을 두어 설계되었으며, 초보자도 쉽게 딥러닝 모델을 만들 수 있도록 돕는다. 이 글에서는 Keras API의 주요 기능과 사용법을 소개하고, 간단한 예제를 통해 실제로 모델을 구축하는 방법을 설명한다.


🤔 Keras API란?
Keras는 원래 독립적인 딥러닝 프레임워크로 개발되었으나, TensorFlow에 통합되면서 TensorFlow의 공식적인 고수준 API가 되었다. Keras는 모델을 쉽게 정의하고 훈련할 수 있도록 다양한 모듈과 클래스를 제공한다. 이러한 모듈은 레이어(layers), 활성화 함수(activation functions), 옵티마이저(optimizers) 등을 포함한다. Keras API는 TensorFlow의 강력한 기능을 활용하면서도 사용자 친화적인 인터페이스를 제공하여 머신러닝 엔지니어와 연구자 모두에게 유용하다.


📚 주요 기능 및 구성 요소
Keras API는 다양한 기능을 제공하며, 주요 구성 요소는 다음과 같다.

  • 모델(Models): Keras에서는 Sequential 모델과 Functional API를 사용하여 모델을 정의할 수 있다. Sequential 모델은 레이어를 순차적으로 쌓는 방식으로 간단한 모델을 만들 때 유용하다. Functional API는 더 복잡한 구조의 모델을 정의할 수 있게 해주며, 다중 입력/출력 모델이나 공유 레이어를 사용하는 모델을 만들 때 활용된다.
  • 레이어(Layers): Keras는 다양한 종류의 레이어를 제공한다. Dense 레이어, Convolutional 레이어, Recurrent 레이어 등이 있으며, 필요에 따라 커스텀 레이어를 정의할 수도 있다. 각 레이어는 입력 데이터를 변환하고, 모델의 학습 가능한 파라미터를 포함한다.
  • 활성화 함수(Activation Functions): 각 레이어의 출력에 적용되는 활성화 함수는 모델의 비선형성을 추가하여 복잡한 패턴을 학습할 수 있도록 돕는다. ReLU, Sigmoid, Tanh 등의 다양한 활성화 함수를 사용할 수 있다.
  • 옵티마이저(Optimizers): 모델의 학습 과정에서 손실 함수(loss function)를 최소화하기 위해 사용되는 알고리즘이다. Adam, SGD, RMSprop 등의 다양한 옵티마이저를 제공하며, 학습률(learning rate)과 같은 하이퍼파라미터를 조정하여 학습 성능을 개선할 수 있다.
  • 손실 함수(Loss Functions): 모델의 예측값과 실제값 사이의 차이를 측정하는 함수이다. Mean Squared Error (MSE), Categorical Crossentropy 등의 다양한 손실 함수를 사용할 수 있으며, 문제의 특성에 맞는 손실 함수를 선택하는 것이 중요하다.
  • 평가 지표(Metrics): 모델의 성능을 평가하기 위해 사용되는 지표이다. Accuracy, Precision, Recall, F1-score 등의 다양한 평가 지표를 제공하며, 학습 과정에서 모델의 성능을 모니터링하는 데 사용된다.

💻 Sequential 모델 예제
Sequential 모델은 레이어를 순차적으로 쌓아서 모델을 정의하는 가장 간단한 방법이다. 다음은 Sequential 모델을 사용하여 간단한 신경망을 구축하는 예제이다.

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

# Sequential 모델 정의
model = keras.Sequential([
    layers.Dense(64, activation='relu', input_shape=(784,)),
    layers.Dense(10, activation='softmax')
])

# 모델 컴파일
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

# 데이터 준비 (예시)
import numpy as np
data = np.random.random((1000, 784))
labels = np.random.randint(10, size=(1000,))
one_hot_labels = tf.keras.utils.to_categorical(labels, num_classes=10)

# 모델 훈련
model.fit(data, one_hot_labels, epochs=10, batch_size=32)

# 모델 평가
loss, accuracy = model.evaluate(data, one_hot_labels)
print('Loss:', loss)
print('Accuracy:', accuracy)

위 코드에서는 784개의 입력 노드를 가진 Dense 레이어와 10개의 출력 노드를 가진 Dense 레이어를 사용하여 모델을 정의했다. 'relu' 활성화 함수는 첫 번째 레이어에 사용되었고, 'softmax' 활성화 함수는 출력 레이어에 사용되었다. 모델은 'adam' 옵티마이저와 'categorical_crossentropy' 손실 함수를 사용하여 컴파일되었으며, 'accuracy'를 평가 지표로 사용했다.


🛠️ Functional API 예제
Functional API는 더 복잡한 모델을 정의할 수 있게 해준다. 다음은 Functional API를 사용하여 다중 입력 모델을 구축하는 예제이다.

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

# 입력 레이어 정의
input_a = keras.Input(shape=(32,))
input_b = keras.Input(shape=(64,))

# 레이어 연결
x = layers.Dense(16, activation='relu')(input_a)
y = layers.Dense(32, activation='relu')(input_b)
z = layers.concatenate([x, y])
output = layers.Dense(1, activation='sigmoid')(z)

# 모델 정의
model = keras.Model(inputs=[input_a, input_b], outputs=output)

# 모델 컴파일
model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])

# 데이터 준비 (예시)
import numpy as np
data_a = np.random.random((1000, 32))
data_b = np.random.random((1000, 64))
labels = np.random.randint(2, size=(1000,))

# 모델 훈련
model.fit([data_a, data_b], labels, epochs=10, batch_size=32)

# 모델 평가
loss, accuracy = model.evaluate([data_a, data_b], labels)
print('Loss:', loss)
print('Accuracy:', accuracy)

위 코드에서는 두 개의 입력 레이어(input_a, input_b)를 정의하고, 각 입력 레이어를 Dense 레이어에 연결했다. 그 후, concatenate 레이어를 사용하여 두 레이어의 출력을 합치고, 최종 출력 레이어를 정의했다. Functional API를 사용하면 레이어를 자유롭게 연결하여 복잡한 구조의 모델을 쉽게 정의할 수 있다.


🔑 주요 용어 정리

  • 레이어 (Layer): 신경망의 기본 구성 요소 (Basic component of a neural network)
  • 활성화 함수 (Activation Function): 레이어의 출력에 적용되는 비선형 함수 (Non-linear function applied to the output of a layer)
  • 옵티마이저 (Optimizer): 모델의 학습 방법을 결정하는 알고리즘 (Algorithm that determines how a model learns)
  • 손실 함수 (Loss Function): 모델의 예측값과 실제값의 차이를 측정하는 함수 (Function that measures the difference between predicted and actual values)
  • Sequential 모델 (Sequential Model): 레이어를 순차적으로 쌓아서 만드는 모델 (Model created by stacking layers sequentially)
  • Functional API: 복잡한 모델 구조를 정의하는 데 사용되는 API (API used to define complex model structures)
반응형