Keras를 이용한 딥러닝 모델 빌딩 기초
1. Keras란?
Keras는 Python 기반의 딥러닝 프레임워크로, TensorFlow 위에서 동작하는 고수준 API입니다. 직관적인 인터페이스를 제공하여 딥러닝 모델을 쉽고 빠르게 구축할 수 있습니다. Keras의 주요 특징은 다음과 같습니다.
- 간결한 API: 직관적인 코드로 신경망을 쉽게 설계할 수 있음
- 백엔드 엔진: TensorFlow, Theano, CNTK를 백엔드로 사용 가능
- 모듈형 설계: 레이어, 손실 함수, 활성화 함수, 최적화 알고리즘 등을 독립적으로 구성 가능
- GPU 지원: TensorFlow를 백엔드로 사용할 경우 GPU 가속을 활용할 수 있음
2. Keras 설치 및 환경 설정
Keras는 TensorFlow 2.x에 기본 포함되어 있습니다. 따라서 별도의 설치가 필요하지 않으며, TensorFlow를 설치하면 Keras를 사용할 수 있습니다.
pip install tensorflow
설치가 완료되었는지 확인하려면 다음과 같이 실행합니다.
import tensorflow as tf
print(tf.__version__)
TensorFlow가 정상적으로 설치되었다면 버전이 출력됩니다. 이후 Keras의 주요 기능을 살펴보겠습니다.
3. Keras의 기본 구성 요소
Keras를 이용해 딥러닝 모델을 빌드하려면 다음과 같은 구성 요소를 이해해야 합니다.
3.1 모델 (Model)
Keras에서는 Sequential API와 Functional API를 이용해 모델을 생성할 수 있습니다.
3.2 레이어 (Layer)
딥러닝 모델을 구성하는 기본 요소로, Keras에서 다양한 종류의 레이어를 제공합니다.
- Dense (완전 연결층)
- Conv2D (합성곱 층)
- MaxPooling2D (풀링 층)
- LSTM (순환 신경망 층)
3.3 활성화 함수 (Activation Function)
비선형성을 추가하여 모델이 복잡한 패턴을 학습할 수 있도록 합니다.
- Sigmoid
- ReLU (Rectified Linear Unit)
- Tanh
3.4 손실 함수 (Loss Function)
모델의 예측과 실제 값 간의 차이를 계산하는 함수입니다.
- 회귀 문제: MSE (Mean Squared Error)
- 분류 문제: Categorical Crossentropy, Binary Crossentropy
3.5 옵티마이저 (Optimizer)
손실 함수를 최소화하기 위해 모델의 가중치를 조정하는 알고리즘입니다.
- SGD (Stochastic Gradient Descent)
- Adam (Adaptive Moment Estimation)
- RMSprop
4. Keras를 이용한 간단한 딥러닝 모델 구축
4.1 데이터 준비
Keras에서는 MNIST와 같은 기본 데이터셋을 제공하며, 이를 활용하여 모델을 쉽게 테스트할 수 있습니다.
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
# 데이터 로드
mnist = keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 데이터 정규화 (0~1 사이 값으로 조정)
x_train, x_test = x_train / 255.0, x_test / 255.0
4.2 모델 정의
Keras의 Sequential
API를 사용하여 신경망 모델을 정의할 수 있습니다.
# 모델 생성
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)), # 입력층 (28x28 이미지 -> 1차원 배열 변환)
keras.layers.Dense(128, activation='relu'), # 은닉층 (ReLU 활성화 함수 사용)
keras.layers.Dense(10, activation='softmax') # 출력층 (10개 클래스 분류)
])
4.3 모델 컴파일
모델을 학습하기 전에 손실 함수와 최적화 알고리즘을 설정해야 합니다.
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
4.4 모델 학습
모델을 학습시키는 과정입니다.
model.fit(x_train, y_train, epochs=5)
4.5 모델 평가
테스트 데이터셋을 이용해 모델의 성능을 평가할 수 있습니다.
test_loss, test_acc = model.evaluate(x_test, y_test)
print("테스트 정확도:", test_acc)
5. Keras의 다른 모델 구축 방법
5.1 Functional API를 이용한 모델 구축
Functional API를 사용하면 더 복잡한 구조의 모델을 만들 수 있습니다.
from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.models import Model
inputs = Input(shape=(28, 28))
x = keras.layers.Flatten()(inputs)
x = Dense(128, activation='relu')(x)
outputs = Dense(10, activation='softmax')(x)
model = Model(inputs=inputs, outputs=outputs)
5.2 CNN(합성곱 신경망) 모델 구축
이미지 데이터 처리를 위해 CNN을 활용할 수도 있습니다.
model = keras.Sequential([
keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)),
keras.layers.MaxPooling2D((2,2)),
keras.layers.Conv2D(64, (3,3), activation='relu'),
keras.layers.MaxPooling2D((2,2)),
keras.layers.Flatten(),
keras.layers.Dense(64, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
6. 결론
Keras는 직관적인 API를 제공하여 딥러닝 모델을 쉽게 구축할 수 있도록 돕습니다. Sequential
모델을 사용하면 간단한 신경망을 빠르게 구현할 수 있으며, Functional API
를 활용하면 보다 복잡한 모델을 설계할 수 있습니다. 또한 CNN과 같은 다양한 아키텍처를 적용하여 이미지 처리에도 사용할 수 있습니다.
이번 포스팅에서는 Keras의 기본 개념과 함께 MNIST 데이터셋을 이용한 신경망 모델을 구축하는 방법을 살펴보았습니다.
'Python DeepLearning' 카테고리의 다른 글
PyTorch와 TensorFlow 비교: 어떤 프레임워크를 선택할까? (0) | 2025.04.06 |
---|---|
PyTorch란? 설치 및 기본 사용법 (0) | 2025.04.05 |
TensorFlow의 주요 기능과 데이터 흐름 그래프 (0) | 2025.04.03 |
TensorFlow란? 설치 및 기본 사용법 (0) | 2025.04.02 |
딥러닝에서의 하이퍼파라미터 튜닝 기초 (0) | 2025.04.01 |