fashion-mnist data set
- 70,000개의 흑백 이미지로 구성된 이미지 데이터
- 각각의 이미지는 (28, 28) 형태의 2차원 텐서로 구성되어 있고 흑백 이미지이기 때문에 채널에 해당하는 차원은 존재하지 않는다.
- 라벨 정보는 각각의 이미지의 범주에 해당하는 id 정보로 0~9 사이의 정수로 구성되어 있다.
* Keras API 를 활용한 fashion-mnist 데이터셋 분류
import tensorflow as tf
from tensorflow.keras.datasets import fashion_mnist
import matplotlib.pyplot as plt
"""* Step 1. Input 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 데이터를 2차원(batch, hight*width)으로 변경 하세요
# 2. feature 데이터를 [0, 1] 사이로 scailing을 수행하세요
train_x = train_x.reshape((60000, 28*28))
test_x = test_x.reshape((10000, 28*28))
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
train_x = scaler.fit_transform(train_x)
test_x = scaler.transform(test_x)
# 1. 1차원 형태의(batch, ) class index 인 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)
"""* Step 3. DNN(MLP) 모델 디자인"""
# 1. Sequential API를 이용하여 fashion_mnist 데이터 셋을 분석 하기 위한 MLP 모델을 디자인 하세요
from tensorflow.keras import models, layers
model = models.Sequential()
model.add(layers.Dense(units=256, activation='relu', input_shape=(28*28,)))
model.add(layers.Dense(units=10, activation='softmax'))
"""* Step 4. 모델의 학습 정보 설정"""
# 1. tf.keras.Model 객체의 compile 메서드를 이용하여 학습을 위한 정보들을 설정하세요
# - optimizer
# - loss : categorical_crossentropy 로 설장(label 데이터를 one-hot-encoding 하였기 때문)
# - 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, epochs=30, verbose=2, batch_size=128, validation_split=0.2)
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()
'프로젝트 > 코드프레소 체험단' 카테고리의 다른 글
이미지 데이터 처리를 위한 CNN 완벽 가이드 - 이미지 처리와 딥러닝 (0) | 2022.03.04 |
---|---|
이미지 데이터 처리를 위한 CNN 완벽 가이드 - 보스턴 집값 회귀 분석 실습 (0) | 2022.03.03 |
이미지 데이터 처리를 위한 CNN 완벽 가이드 - Keras API (0) | 2022.02.22 |
이미지 데이터 처리를 위한 CNN 완벽 가이드 - TF 2.0을 이용한 퍼셉트론 구현 (0) | 2022.02.19 |
이미지 데이터 처리를 위한 CNN 완벽 가이드 - TF 2.0 연산자 이해 (0) | 2022.02.19 |