패션 MNIST 데이터셋을 활용한 신경망 모델 생성하기

패션 MNIST는 의류에 대한 이미지 데이터셋입니다. 이 데이터셋은 총 10가지의 의류 카테고리로 구성되어 있으며, 각 이미지는 28x28 픽셀의 흑백 이미지입니다. 따라서 패션 MNIST 데이터셋은 신경망 모델을 학습시키기에 매우 적합한 데이터셋입니다.

데이터셋 불러오기

먼저, tensorflownumpy 라이브러리를 임포트합니다. 그리고 패션 MNIST 데이터셋을 tensorflowkeras를 통해 불러옵니다.

import tensorflow as tf
import numpy as np

(X_train, y_train), (X_test, y_test) = tf.keras.datasets.fashion_mnist.load_data()

데이터셋 확인하기

불러온 데이터셋의 크기와 일부 샘플을 확인해봅시다.

print("Train dataset shape:", X_train.shape)
print("Test dataset shape:", X_test.shape)

# 데이터셋 중 첫 번째 샘플 확인
import matplotlib.pyplot as plt

plt.imshow(X_train[0], cmap='gray')
plt.title("Label: " + str(y_train[0]))
plt.show()

신경망 모델 생성하기

패션 MNIST 데이터셋을 활용하여 신경망 모델을 생성해보겠습니다. 이번 예제에서는 tensorflowkeras를 사용하겠습니다.

from tensorflow.keras import layers, models

model = models.Sequential()
model.add(layers.Flatten(input_shape=(28, 28)))
model.add(layers.Dense(128, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))

model.summary()

위 예제는 입력층으로 28x28 크기의 이미지를 받고, 첫 번째 은닉층은 128개의 노드를 가지며 활성화 함수로 ReLU를 사용합니다. 마지막으로 출력층은 10개의 노드로 이루어져 있으며, 활성화 함수로는 softmax를 사용합니다.

모델 컴파일 및 학습하기

이제 모델을 컴파일하고 학습시킬 준비가 되었습니다.

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

history = model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, batch_size=32)

위 예제에서는 adam 옵티마이저를 사용하고, 손실 함수로는 sparse_categorical_crossentropy를 사용합니다. 그리고 모델은 10번의 에포크동안 학습됩니다. 학습 속도와 정확도는 history 객체에 저장됩니다.

결과 확인하기

학습이 완료된 모델의 예측 결과를 확인해봅시다.

predictions = model.predict(X_test)

# 첫 번째 샘플의 예측 결과
print("Predicted label:", np.argmax(predictions[0]))
print("True label:", y_test[0])

결론

이번 포스트에서는 패션 MNIST 데이터셋을 활용하여 신경망 모델을 생성하는 방법에 대해 알아보았습니다. 패션 MNIST 데이터셋은 신경망 모델을 학습시키기에 적합한 데이터셋이며, 다양한 패션 아이템을 구분하는 능력을 갖춘 모델을 구축할 수 있습니다.

#DeepLearning #FashionMNIST