[파이썬] 파이썬을 이용한 딥러닝 샘플 프로젝트

딥러닝은 인공지능의 한 분야로, 다층 신경망을 사용하여 복잡한 패턴과 의미를 학습할 수 있습니다. 파이썬은 딥러닝에 많이 활용되며, 풍부한 라이브러리와 간편한 문법으로 인해 많은 개발자들이 선호합니다.

이번 블로그에서는 파이썬을 이용한 간단한 딥러닝 샘플 프로젝트를 소개하려고 합니다. 이 프로젝트는 손글씨 숫자를 인식하는 간단한 분류 모델을 만들어 보는 것입니다.

프로젝트 준비하기

먼저, 이 프로젝트를 위해 필요한 모듈을 설치해야 합니다. 터미널 또는 명령 프롬프트에서 다음 명령을 실행하여 필요한 패키지를 설치합니다.

pip install tensorflow
pip install keras
pip install matplotlib

필요한 패키지를 설치한 후, 다음과 같은 코드를 작성하여 필요한 라이브러리를 import 합니다.

import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt

데이터셋 불러오기

딥러닝 모델을 학습하기 위해서는 학습에 사용할 데이터셋이 필요합니다. 이번 프로젝트에서는 손글씨 숫자를 인식하는 MNIST 데이터셋을 사용하겠습니다. MNIST 데이터셋은 총 70,000 개의 이미지로 구성되어 있으며, 각 이미지는 0부터 9까지의 숫자를 나타냅니다.

(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()

위 코드를 실행하면 MNIST 데이터셋이 손글씨 이미지와 레이블로 분리되어 변수에 할당됩니다. x_trainy_train은 학습에 사용할 데이터셋이며, x_testy_test는 테스트에 사용할 데이터셋입니다.

데이터 시각화하기

학습 데이터셋의 일부를 시각화하여 어떤 이미지들이 포함되어 있는지 확인해 보겠습니다.

plt.imshow(x_train[0], cmap='gray')
plt.show()

위 코드를 실행하면 학습 데이터셋의 첫 번째 이미지가 그려집니다. cmap='gray' 파라미터를 사용하여 이미지를 흑백으로 표시합니다.

모델 구성하기

이제 신경망 모델을 구성하기 위해 필요한 레이어를 정의합니다. 이번 프로젝트에서는 간단한 다층 퍼셉트론 신경망 모델을 사용하겠습니다.

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(10, activation='softmax')
])

위 코드는 입력 레이어, 은닉 레이어, 출력 레이어를 순서대로 구성한 것입니다.

모델 컴파일하기

모델을 학습시키기 전에 모델을 컴파일해야 합니다. 컴파일할 때는 손실 함수, 최적화 알고리즘, 평가 지표 등을 설정할 수 있습니다.

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

위 코드에서는 adam 최적화 알고리즘을 사용하며, sparse_categorical_crossentropy 손실 함수를 사용합니다. 평가 지표로는 정확도를 사용합니다.

모델 학습하기

이제 데이터셋을 사용하여 모델을 학습시킬 차례입니다. 학습을 수행하기 전에 데이터셋을 정규화하고, 일부 데이터를 검증용으로 분리하도록 하겠습니다.

x_train = x_train / 255.0
x_test = x_test / 255.0

history = model.fit(x_train, y_train, validation_split=0.2, epochs=10)

위 코드에서는 데이터셋을 255로 나누어 정규화합니다. 그리고 validation_split=0.2 파라미터를 사용하여 학습 데이터셋의 20%를 검증용 데이터셋으로 분리합니다. epochs=10은 전체 데이터셋을 10번 반복하여 학습하겠다는 의미입니다.

학습 결과 확인하기

모델을 학습시킨 후에는 학습 결과를 확인할 수 있습니다. 학습 과정에서 발생한 손실과 정확도의 변화를 그래프로 표시해 보겠습니다.

plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('Loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Validation'], loc='upper right')
plt.show()

plt.plot(history.history['accuracy'])
plt.plot(history.history['val_accuracy'])
plt.title('Accuracy')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Validation'], loc='lower right')
plt.show()

위 코드에서는 history 객체에 저장된 손실과 정확도를 가져와서 각각의 변화를 그래프로 그립니다.

테스트 데이터셋으로 평가하기

마지막으로 학습된 모델을 사용하여 테스트 데이터셋에 대한 평가를 수행해 보겠습니다.

test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print('Test accuracy:', test_acc)

위 코드는 테스트 데이터셋에 대한 손실과 정확도를 출력합니다.

이렇게 파이썬을 이용하여 간단한 딥러닝 샘플 프로젝트를 만들어 보았습니다. 딥러닝은 복잡한 문제를 해결하는 데에 많이 사용되며, 파이썬을 통해 쉽게 구현할 수 있습니다. 실제 프로젝트를 개발하거나 공부하기 위해 위의 예제를 참고하여 직접 코드를 작성해 보세요.

더 많은 딥러닝 관련 프로젝트와 튜토리얼을 알고 싶다면 케라스텐서플로의 공식 문서를 참고하세요.