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를 활용하면 몇 줄의 코드만으로도 데이터 로드부터 학습, 평가, 추론까지 딥러닝의 전 과정을 손쉽게 구현할 수 있습니다.