패션 MNIST는 의류에 대한 이미지 데이터셋입니다. 이 데이터셋은 총 10가지의 의류 카테고리로 구성되어 있으며, 각 이미지는 28x28 픽셀의 흑백 이미지입니다. 따라서 패션 MNIST 데이터셋은 신경망 모델을 학습시키기에 매우 적합한 데이터셋입니다.
데이터셋 불러오기
먼저, tensorflow
와 numpy
라이브러리를 임포트합니다. 그리고 패션 MNIST 데이터셋을 tensorflow
의 keras
를 통해 불러옵니다.
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 데이터셋을 활용하여 신경망 모델을 생성해보겠습니다. 이번 예제에서는 tensorflow
의 keras
를 사용하겠습니다.
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