fashion-mnist data set
- 70,000개의 흑백 이미지로 구성된 이미지 데이터
- 각각의 이미지는 (28, 28) 형태의 2차원 텐서로 구성되어 있고 흑백 이미지이기 때문에 채널에 해당하는 차원은 존재하지 않는다.
- 라벨 정보는 각각의 이미지의 범주에 해당하는 id 정보로 0~9 사이의 정수로 구성되어 있다.
* Keras API를 활용한 fashion-mnist 데이터셋 분류 CNN 모델 구현
import tensorflow as tf
from tensorflow.keras.datasets import fashion_mnist
"""* Step 1. Inptu tensor 와 Target tensor 준비(훈련데이터)"""
# label 데이터의 각 value 에 해당하는 class name 정보
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
# 수강생 작성 코드
# 1. import 한 fashion_mnist API를 이용하여 fashion_mnist 데이터 셋을 다운로드 받으세요
(train_x, train_y), (test_x, test_y) = fashion_mnist.load_data()
"""* Step 2. 입력데이터의 전처리 """
# 수강생 작성 코드
# 1. 3차원 형태(batch, hight, width)의 train, test feature 데이터를 3차원(batch, hight, width, chanel(1))으로 변경 하세요
# 2. feature 데이터를 [0, 1] 사이로 scailing을 수행하세요
train_x = train_x/255.
test_x = test_x/255.
train_x = train_x.reshape((60000, 28, 28, 1))
test_x = test_x.reshape((10000, 28, 28, 1))
# 수강생 작성 코드
# 1. 1차원 형태의(batch, ) class id 인 train, test label 데이터를
# to_categorical API를 이용하여 one-hot-encoding 수행하여 2차원(batch, class_cnt) 으로 변경 하세요
train_y = tf.keras.utils.to_categorical(train_y)
test_y = tf.keras.utils.to_categorical(test_y)
"""* Step3. CNN 모델 디자인"""
# 수강생 작성 코드
# 1. Sequential API를 이용하여 fashion_mnist 데이터 셋을 분석 하기 위한 CNN 모델을 디자인 하세요
from tensorflow.keras import models, layers
model = models.Sequential()
model.add(layers.Conv2D(filters=32, kernel_size=(3, 3),
activation='relu',
input_shape=(28, 28, 1)))
model.add(layers.MaxPool2D(pool_size=(2, 2)))
model.add(layers.Conv2D(filters=64, kernel_size=(3, 3),
activation='relu'))
model.add(layers.MaxPool2D(pool_size=(2, 2)))
model.add(layers.Conv2D(filters=64, kernel_size=(3, 3),
activation='relu'))
# 3D를 1D로 변환
model.add(layers.Flatten())
# Classification : Fully Connected Layer 추가
model.add(layers.Dense(units=64, activation='relu'))
model.add(layers.Dense(units=10, activation='softmax'))
"""* Step 4. 모델의 학습 정보 설정"""
# 수강생 작성 코드
# 1. tf.keras.Model 객체의 compile 메서드를 이용하여 학습을 위한 정보들을 설정하세요
# - optimizer
# - loss
# - metrics : 체점 기준인 accuracy 로 설정
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
"""* Step 5. 모델에 input, target 데이터 연결 후 학습"""
# 수강생 작성 코드
# 1. tf.keras.Model 객체의 fit 메서드를 이용하여 모델을 학습하세요
# - fit 메서드의 verbose=2 로 설정 하세요
history = model.fit(x=train_x, y=train_y, batch_size=256, epochs=20, verbose=2, validation_split=0.2)
import matplotlib.pyplot as plt
# 모델의 학습과정 시각화
acc = history.history['accuracy']
val_acc = history.history['val_accuracy']
loss = history.history['loss']
val_loss = history.history['val_loss']
epochs = range(len(acc))
plt.plot(epochs, acc, 'bo', label='Training acc')
plt.plot(epochs, val_acc, 'b', label='Validation acc')
plt.title('Training and Validation Accuracy')
plt.legend()
plt.show()
plt.plot(epochs, loss, 'bo', label='Training loss')
plt.plot(epochs, val_loss, 'b', label='Validation loss')
plt.title('Training and Validation Loss')
plt.legend()
plt.show()
'프로젝트 > 코드프레소 체험단' 카테고리의 다른 글
이미지 데이터 처리를 위한 CNN 완벽 가이드 - CIFAR-10-codepresso 분류 CNN 모델 구현 (0) | 2022.03.07 |
---|---|
이미지 데이터 처리를 위한 CNN 완벽 가이드 - CIFAR-10 분류 CNN 모델 구현 (0) | 2022.03.07 |
이미지 데이터 처리를 위한 CNN 완벽 가이드 - MNIST 데이터셋 분류 CNN 모델 구현 (0) | 2022.03.06 |
이미지 데이터 처리를 위한 CNN 완벽 가이드 - Keras의 CNN API (0) | 2022.03.05 |
이미지 데이터 처리를 위한 CNN 완벽 가이드 - 이미지 데이터에 대한 이해 (0) | 2022.03.04 |