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

Keras를 활용한 딥러닝 모델 학습, 평가 및 추론 완벽 가이드


TensorFlow와 Keras란 무엇인가?

TensorFlow는 구글(Google)이 제공하는 대표적인 머신러닝 프레임워크입니다. 오픈소스로 공개되어 있으며, Python과 함께 사용하여 알고리즘 구현, 딥러닝 애플리케이션 개발 등 다양한 작업에 활용됩니다. 연구 목적과 실제 프로덕션 환경 모두에서 널리 쓰이고 있으며, 복잡한 수학 연산을 빠르게 처리할 수 있는 최적화 기법을 내장하고 있습니다.

'tensorflow' 패키지는 Windows 환경에서 아래 명령어 한 줄로 간단히 설치할 수 있습니다.

pip install tensorflow

Keras는 ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System)라는 프로젝트의 연구 과정에서 개발된 딥러닝 API입니다. Python으로 작성되었으며, 머신러닝 문제를 효율적으로 해결할 수 있도록 돕는 생산성 높은 인터페이스를 제공하는 고수준(High-level) API입니다.

Keras의 주요 특징

  • 뛰어난 확장성: TPU나 GPU 클러스터 환경에서도 원활하게 실행할 수 있습니다.

  • 크로스 플랫폼 지원: Keras 모델은 웹 브라우저나 모바일 기기에서도 동작하도록 내보내기(export)할 수 있습니다.

  • TensorFlow 내장: Keras는 이미 TensorFlow 패키지에 포함되어 있어 별도 설치 없이 바로 사용할 수 있습니다.

Keras는 다음 코드를 통해 간단히 불러올 수 있습니다.

import tensorflow
from tensorflow import keras

Keras 함수형 API(Functional API)란?

Keras 함수형 API는 순차형 API(Sequential API)로 만든 모델보다 훨씬 유연한 모델 구조를 설계할 수 있게 해줍니다. 함수형 API를 사용하면 비선형 토폴로지를 가진 모델을 다룰 수 있고, 레이어를 공유하거나 여러 개의 입력과 출력을 동시에 처리하는 것도 가능합니다.

딥러닝 모델은 일반적으로 여러 층(layer)으로 구성된 유향 비순환 그래프(DAG, Directed Acyclic Graph) 형태를 띠며, 함수형 API는 바로 이 레이어 그래프를 직관적으로 구축하는 데 핵심적인 역할을 합니다.

아래 예제 코드는 Google Colaboratory 환경에서 실행되었습니다. Google Colab은 브라우저만으로 Python 코드를 실행할 수 있게 해주며, 별도의 설정이 필요 없고 GPU에 무료로 접근할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 구축된 서비스입니다.

예제 코드

print("MNIST 데이터 불러오기")
print("데이터를 학습용과 테스트용으로 분리")
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
print("학습 효율을 높이기 위해 데이터 형태 변환")
x_train = x_train.reshape(60000, 784).astype("float32") / 255
x_test = x_test.reshape(10000, 784).astype("float32") / 255
print("모델 컴파일")
model.compile(
    loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    optimizer=keras.optimizers.RMSprop(),
    metrics=["accuracy"],
)
print("모델에 데이터 학습시키기")
history = model.fit(x_train, y_train, batch_size=64, epochs=2, validation_split=0.2)
test_scores = model.evaluate(x_test, y_test, verbose=2)
print("모델의 손실값:", test_scores[0])
print("모델의 정확도:", test_scores[1])

코드 출처 − https://www.tensorflow.org/guide/keras/functional

실행 결과

Load the MNIST data
Split data into training and test data
Reshape the data for better training
Compile the model
Fit the data to the model
Epoch 1/2
750/750 [==============================] - 3s 3ms/step - loss: 0.5768 - accuracy: 0.8394 -
val_loss: 0.2015 - val_accuracy: 0.9405
Epoch 2/2
750/750 [==============================] - 2s 3ms/step - loss: 0.1720 - accuracy: 0.9495 -
val_loss: 0.1462 - val_accuracy: 0.9580
313/313 - 0s - loss: 0.1433 - accuracy: 0.9584
The loss associated with model: 0.14328785240650177
The accuracy of the model: 0.9584000110626221

코드 상세 설명

  • MNIST 데이터셋이 실행 환경에 로드됩니다.

  • 전체 데이터가 학습(training) 세트와 테스트(test) 세트로 분리됩니다.

  • 모델의 정확도를 높이기 위해 데이터의 형태가 변환(reshape)되고, 픽셀 값이 0~1 범위로 정규화됩니다.

  • 손실 함수, 옵티마이저(RMSprop), 평가 지표(accuracy)를 지정하여 모델이 컴파일됩니다.

  • 배치 크기 64, 에포크 2회 조건으로 학습 데이터에 모델을 학습(fit)시킵니다.

  • 마지막으로 테스트 데이터를 통해 평가한 손실값과 정확도가 콘솔에 출력됩니다.

실행 결과를 보면 첫 번째 에포크에서 검증 정확도가 약 94%, 두 번째 에포크에서 약 95.8%까지 상승했으며, 최종 테스트 정확도는 약 95.84%로 확인됩니다. 이처럼 Keras의 함수형 API를 활용하면 몇 줄의 코드만으로도 데이터 로드부터 학습, 평가, 추론까지 딥러닝의 전 과정을 손쉽게 구현할 수 있습니다.