본문 바로가기
AI, 빅데이터/AI

[AI] Fashion Mnist 데이터셋을 사용한 CNN

by Foxy현 2022. 12. 18.
728x90
반응형

저번 글에서는 Fashion Mnist를 사용하여 이미지의 라벨을 추론하는 실습을 했었는데요

 

2022.12.17 - [AI, 빅데이터/AI] - [AI] Fashion Mnist 데이터셋으로 이미지 분류하기

 

[AI] Fashion Mnist 데이터셋으로 이미지 분류하기

안녕하세요! 오늘은 교과서처럼 사용되는 데이터셋중 하나인 Fasion MNIST 데이터셋으로 이미지를 분류해볼 예정입니다. 데이터셋에 대한 자세한 내용은 캐글에서 확인하시길 바랍니다. Fashion MNIST

foxyprogramming.tistory.com

 

CNN을 하기 전까지의 과정에 대한 내용은 위의 글에서와 마찬가지로 진행합니다.

 

라이브러리는 추가할 부분이 있습니다.

CNN 모델 구성할 때 필요한 라이브러리를 추가합니다.

 

import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
from keras.layers import Conv2D, pooling, Flatten, Dense
from keras.models import Sequential
from keras.utils import np_utils

 

 

image의 shape를 변경해주고 정규화를 하며, label은 원핫인코딩을 합니다.

 

train_image = train_image.reshape(train_image.shape[0],28,28).astype('float32')
test_image = test_image.reshape(test_image.shape[0],28,28).astype('float')
train_label = np_utils.to_categorical(train_label)
test_label = np_utils.to_categorical(test_label)

CNN 모델을 설계합니다.

 

model = keras.Sequential([
    Conv2D(32,(3,3),padding = 'same', strides=(1,1), activation = 'relu', input_shape = (28,28,1)),
    pooling.MaxPool2D(pool_size=(2,2)),
    
    Conv2D(64,(3,3),padding='same', strides=(1,1),activation='relu'),
    pooling.MaxPool2D(pool_size=(2,2)),

    Flatten(),
    Dense(10,activation='softmax')
])
model.summary()

 

Convolution 과 Pooling층을 2번 반복해줬고, 마지막에 출력층은 softmax로 하여 확률을 예측합니다.

설계된 모델은 다음과 같습니다.

 

 

모델을 컴파일합니다.

 

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

 

마지막으로 모델을 학습 데이터로 학습합니다.

 

model.fit(train_image, train_label, epochs=15)

 

학습한 모델을 평가하고, 예측합니다.

 

test_loss, test_acc = model.evaluate(test_image, test_label, verbose=2)
prediction = model.predict(test_image)
plt.imshow(test_image[0])
np.argmax(prediction[0])

 


Fashion Mnist 데이터셋을 사용하여 CNN 모델을 실습했네요

 

다음에는 더 좋은 글 가져오도록 하겠습니다!

 

 

 

 

728x90
반응형