IT/Python

[Python] TensorFlow를 이용한 딥러닝 모델 구현하기

멋진 선배 2025. 1. 20. 12:28
반응형

TensorFlow를 이용해 딥러링 모델을 구현하는 방법에 대해서 알아보도록 하겠습니다. TensorFlow는 구글에서 개발한 오픈소스 머신러닝 라이브러리로 딥러닝 모델을 쉽고 효율적으로 구현할 수 있게 해줍니다. 

TensorFlow 소개

TensorFlow는 데이터 흐름 그래프를 사용하여 수치 연산을 수행 합니다. 이 그래프의 노드는 수학 연산을 나타내고 엣지는 다차원 데이터 배열(텐ㅌ서)를 나타냅니다. 이러한 구조를 통해 복잡한 연산을 효율적으로 수행할 수 있습니다. 

모델 구현 단계

TensorFlow를 이용한 딥러닝 모델 구현은 다음과 같은 단계로 이루어 집니다.

  1. 데이터 준비
  2. 모델 구성
  3. 모델 컴파일
  4. 모델 훈련
  5. 모델 평가 및 예측

각 단계를 자세히 살펴 보겠습니다.

1.데이터 준비

먼저 필요한 라이브러리를 임포트 하고 데이터를 준비 합니다.

import tensorflow as tf
import numpy as np

# 예시 데이터 생성
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5]])
y = np.array([3, 5, 7, 9])

2.모델 구성

TensorFlow의 Keras API를 사용하여 모델을 구성합니다. Sequential 모델을 사용ㅇ하면 층을 순차적으로 쌓을 수 있습니다.

model = tf.keras.Sequential([
    tf.keras.layers.Dense(64, activation='relu', input_shape=(2,)),
    tf.keras.layers.Dense(32, activation='relu'),
    tf.keras.layers.Dense(1)
])

이 코드는 입력층, 두 개의 은닉층, 그리고 출력층으로 구성된 간단한 신경망을 만듭니다.

3.모델 컴파일

모델을 컴파일하여 학습 방법을 설정합니다.

model.compile(optimizer='adam', loss='mean_squared_error')

여기서는 Adam 옵티마이저와 평균 제곱 오차 손실 함수를 사용 합니다.

4.모델 훈련

준비된 데이터로 모델을 훈련시킵니다.

history = model.fit(X, y, epochs=100, verbose=0)

'epochs'는 전체 데이터 셋을 몇 번 반복해서 학습할지 지정합니다.

5.모델 평가 및 예측

훈련된 모델을 평가하고 새로운 데이터에 대해 예측을 수행 합니다.

# 모델 평가
loss = model.evaluate(X, y)
print(f"모델 손실: {loss}")

# 예측
new_data = np.array([[5, 6], [6, 7]])
predictions = model.predict(new_data)
print(f"예측 결과: {predictions}")

고급 기능 

TensorFlow는 더 복잡한 모델 구현을 위한 다양한 기능을 제공 합니다.

  1. 커스텀 레이어 : 'tf.keras.layer.Layer'를 상속받아 사용자 정의 레이어를 만들 수 있습니다.
  2. 함수형 API : 더 복잡한 모델 구조를 만들 수 있습니다.
  3. 콜백 : 훈련 과정 중 특정 시점에 원하는 동작을 수행할 수 있습니다.
  4. 전이학습 : 사전 훈련된 모델을 사용하여 새로운 작업에 적용할 수 있습니다.

모델 저장 및 로드

훈련된 모델을 저장하고 나중에 다시 불러올 수 있습니다.

# 모델 저장
model.save('my_model.h5')

# 모델 로드
loaded_model = tf.keras.models.load_model('my_model.h5')

전체 코드 정리

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

# 데이터 준비
np.random.seed(0)
X = np.random.rand(100, 1)
y = 2 * X + 1 + np.random.randn(100, 1) * 0.1

# 데이터 분할
X_train, X_test = X[:80], X[80:]
y_train, y_test = y[:80], y[80:]

# 모델 구성
model = tf.keras.Sequential([
    tf.keras.layers.Dense(64, activation='relu', input_shape=(1,)),
    tf.keras.layers.Dense(32, activation='relu'),
    tf.keras.layers.Dense(1)
])

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

# 모델 요약
model.summary()

# 모델 훈련
history = model.fit(X_train, y_train, epochs=100, validation_split=0.2, verbose=0)

# 학습 과정 시각화
plt.plot(history.history['loss'], label='Training Loss')
plt.plot(history.history['val_loss'], label='Validation Loss')
plt.title('Model Loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend()
plt.show()

# 모델 평가
loss, mae = model.evaluate(X_test, y_test, verbose=0)
print(f"테스트 손실: {loss:.4f}")
print(f"테스트 MAE: {mae:.4f}")

# 예측
X_new = np.array([[0], [0.5], [1]])
predictions = model.predict(X_new)
print("예측 결과:")
for x, pred in zip(X_new, predictions):
    print(f"입력: {x[0]:.2f}, 예측: {pred[0]:.4f}")

# 결과 시각화
plt.scatter(X, y, label='Data')
plt.plot(X_new, predictions, 'r', label='Predictions')
plt.title('Regression Results')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

# 모델 저장
model.save('my_regression_model.h5')

# 모델 로드 (예시)
loaded_model = tf.keras.models.load_model('my_regression_model.h5')
print("로드된 모델의 예측:")
print(loaded_model.predict(X_new))

결론

TensorFlow를 이용한 딥러닝 모델 구현은 직관적으로 효율적 입니다. 기본적인 단계를 따라가면 간단한 모델부터 복잡한 모델까지 다양하게 구현할 수 있습니다. 더 나아가 TensorFlow의 고급 기능을 활용하면 더욱 강력하고 유연한 모델을 만들 수 있습니다.

 

딥러닝 모델 구현에 있어 가장 중요한 것은 문제 적합한 모델 구조를 설계하고, 적절한 하이퍼 파라미터를 선택하는 것 입니다. 이는 많은 실험과 경험을 통해 얻을 수 있는 노하우 입니다.

 

TensorFlow의 공식 문서와 튜토리얼을 참고하면 더 자세한 내용을 학습할 수 있습니다. 꾸준한 실습과 학습을 통해 딥러닝 모델 구현 실력을 향상시켜 나가시기 바랍니다.

반응형