딥러닝(Deep Learning)은 여러 계층의 신경망을 사용해 데이터를 학습하여 패턴을 찾아내는 머신러닝의 한 분야입니다.
파이썬의 TensorFlow와 Keras는 딥러닝 모델을 손쉽게 구현할 수 있는 강력한 라이브러리입니다.
이번 글에서는 TensorFlow와 Keras를 활용해 기본적인 신경망 모델을 구축하는 방법을 알아보겠습니다.
1. TensorFlow와 Keras 소개 및 설치
TensorFlow
는 구글이 개발한 오픈소스 딥러닝 프레임워크로, 복잡한 신경망을 효율적으로 구축하고 훈련시킬 수 있습니다. Keras
는 TensorFlow의 고수준 API로, 신경망 구축을 더욱 간단하게 해줍니다. 설치는 아래 명령어로 진행할 수 있습니다.
pip install tensorflow
2. 신경망 모델의 기본 개념
신경망 모델은 입력 계층(Input Layer), 은닉 계층(Hidden Layer), 출력 계층(Output Layer)으로 구성됩니다. 각 계층에는 여러 개의 뉴런이 있으며, 뉴런은 가중치와 활성화 함수를 통해 입력 데이터를 처리합니다. 이 과정을 통해 모델은 학습을 진행하며 예측을 개선합니다.
3. TensorFlow와 Keras로 신경망 모델 구축하기
이제 TensorFlow와 Keras를 사용해 신경망 모델을 구성하고 훈련시키는 과정을 단계별로 살펴보겠습니다. 예제로는 손글씨 숫자 이미지 데이터셋인 MNIST를 사용하여, 숫자를 분류하는 모델을 만들어보겠습니다.
3.1 데이터 로드 및 전처리
TensorFlow에서 제공하는 MNIST 데이터셋을 로드하고, 데이터를 신경망에 적합한 형태로 전처리합니다.
예제: 데이터 로드 및 전처리
import tensorflow as tf
# 데이터셋 로드
mnist = tf.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
MNIST 데이터셋은 28x28 크기의 흑백 손글씨 숫자 이미지로 구성되어 있습니다. 데이터를 0에서 1 사이 값으로 정규화하여 학습 성능을 향상시킵니다.
3.2 신경망 모델 생성
이제 Keras의 Sequential
API를 사용하여 신경망 모델을 생성합니다. 이 모델은 입력층과 은닉층, 출력층을 순차적으로 쌓아 구성합니다.
예제: 신경망 모델 생성
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
# 모델 생성
model = Sequential([
Flatten(input_shape=(28, 28)), # 2차원 이미지를 1차원으로 변환
Dense(128, activation='relu'), # 은닉층
Dense(10, activation='softmax') # 출력층
])
# 모델 요약 정보 출력
model.summary()
위 코드에서 Flatten
레이어는 2차원 이미지를 1차원 벡터로 변환하며, Dense
레이어는 완전 연결층을 정의합니다. 출력층의 softmax
활성화 함수는 각 클래스의 확률을 반환하여 숫자 0~9를 분류합니다.
4. 모델 컴파일 및 훈련
모델을 훈련시키기 전에, compile
메서드를 사용해 손실 함수와 옵티마이저, 평가 지표를 설정해야 합니다.
예제: 모델 컴파일
# 모델 컴파일
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
adam
옵티마이저와 sparse_categorical_crossentropy
손실 함수를 사용하여 모델을 컴파일합니다. accuracy
를 평가 지표로 설정하여 모델의 정확도를 측정할 수 있습니다.
예제: 모델 훈련
# 모델 훈련
model.fit(x_train, y_train, epochs=5)
훈련 데이터(x_train
과 y_train
)를 사용하여 모델을 훈련합니다. epochs
는 전체 데이터셋을 학습하는 반복 횟수입니다. 예제에서는 5번 반복하여 훈련합니다.
5. 모델 평가 및 예측
훈련이 완료된 후에는 테스트 데이터를 사용해 모델의 성능을 평가하고, 새로운 데이터로 예측을 수행할 수 있습니다.
예제: 모델 평가
# 모델 평가
test_loss, test_accuracy = model.evaluate(x_test, y_test, verbose=2)
print("테스트 정확도:", test_accuracy)
테스트 데이터(x_test
, y_test
)를 사용하여 모델의 정확도를 평가합니다. 테스트 정확도를 통해 모델의 성능을 확인할 수 있습니다.
예제: 예측 수행
# 예측 수행
predictions = model.predict(x_test)
# 첫 번째 테스트 이미지의 예측 결과 확인
import numpy as np
print("예측한 숫자:", np.argmax(predictions[0]))
위 코드에서 predict
메서드를 통해 예측을 수행하고, argmax
함수를 사용해 가장 높은 확률을 가진 클래스를 예측 결과로 반환합니다.
마무리
이번 글에서는 TensorFlow와 Keras를 활용하여 신경망 모델을 구축하고 훈련하는 과정을 살펴보았습니다.
딥러닝의 기초를 이해하고 다양한 데이터를 활용해 실습을 진행해보세요.
딥러닝은 다양한 활용 가능성을 제공하며, TensorFlow와 Keras를 통해 쉽게 시작할 수 있습니다.