DEEP LEARNING/Deep Learning Library

DL(딥러닝) : Tensflow의 Fashion-MNIST 활용(DNN) (1)

신강희 2024. 4. 30. 15:45
728x90

< Building_an_Artificial_Neural_Network >

 

Fashion-MNIST는 기계 학습 및 딥 러닝 연구를 위해 개발된 데이터셋 중 하나

 

<Fashion-MNIST의 특징>

  1. 카테고리: Fashion-MNIST는 10개의 카테고리로 구성되어 있습니다. 이 카테고리는 티셔츠, 바지, 스웨터, 드레스, 코트, 샌들, 셔츠, 운동화, 가방, 앵클 부츠 등의 의류와 액세서리를 포함합니다.
  2. 이미지 크기: 모든 이미지는 28x28 픽셀의 흑백 이미지로 구성되어 있습니다. 각 픽셀 값은 0부터 255까지의 정수로 표현됩니다.
  3. 데이터 분할: Fashion-MNIST는 60,000개의 훈련 이미지와 10,000개의 테스트 이미지로 구성되어 있습니다.
  • Fashion-MNIST는 MNIST보다 조금 더 복잡하고 현실적인 문제를 모델링하기 위한 목적으로 설계됨.
  • 따라서 Fashion-MNIST는 이미지 분류, 특히 의류 및 액세서리 분류 문제에 대한 알고리즘과 모델의 성능을 평가하는 데 사용된다.

이 데이터셋은 딥 러닝 모델의 성능 향상과 학습 알고리즘의 효율성을 검증하는 데 매우 유용하며, 다양한 신경망 아키텍처와 학습 기법을 실험하고 비교하는 데 사용된다.

 

Stage 1: Installing dependencies

# 설치되어있지 않다면 작업중인 가상환경에 tensorflow 설치 필요

pip install tensorflow

 

Stage 2: Import dependencies for the project

import numpy as np
import tensorflow as tf
from tensorflow.keras.datasets import fashion_mnist

 

Stage 3: Dataset preprocessing

# Loading the dataset

# 4개파일을 다운받아 보여준다.
 
fashion_mnist.load_data()

((array([[[0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          ...,
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0]],
  
         [[0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          ...,
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0]],
  
         [[0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          ...,
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0]],
  
         ...,
  
         [[0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          ...,
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0]],
  
         [[0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          ...,
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0]],
  
         [[0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          ...,
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0]]], dtype=uint8),
  array([9, 0, 0, ..., 3, 0, 5], dtype=uint8)),
 (array([[[0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          ...,
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0]],
  
         [[0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          ...,
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0]],
  
         [[0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          ...,
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0]],
  
         ...,
  
         [[0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          ...,
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0]],
  
         [[0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          ...,
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0]],
  
         [[0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          ...,
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0],
          [0, 0, 0, ..., 0, 0, 0]]], dtype=uint8),
  array([9, 2, 1, ..., 8, 1, 5], dtype=uint8)))

 

# 이 4개가 트레이닝용 2개 테스트용 2개 //변수로 저장할때는 약속된 형태이므로 꼭 이형태로 저장해주어야 한다.
 
(X_train, y_train) , (X_test, y_test) = fashion_mnist.load_data()

 

# 사진의 개수 , 행, 열
 
X_train.shape
(60000, 28, 28)

 

# 전체 사진 파일은 7만 => train 6만 test 1만
 
X_test.shape
(10000, 28, 28)

 

# 첫번째 이미지를 가져와보자
 
X_train[ 0 , : , : ]

 

# X_train의 0번째 데이터의 답은 y_train 0번째에 있다
# 답을 확인해 보면 9 앵클부츠
# https://github.com/zalandoresearch/fashion-mnist 메뉴얼 레이블 부분 참고
 
y_train[0]
9

 

# 두번째 이미지를 가져와보자
 
X_train[ 1 , : , : ]

 

# 메뉴얼 참고결과 0은 티셔츠
 
y_train[1]
0

 

# Image normalization

# 0과 1사이 값일때 학습이 용이하기 때문에 이미지 데이터도 피쳐 스케일링을 해야한다.
### 여기서 구지 스케일링 코드를 쓸필요없이 이미지 파일의 범위는 255개로 정해져 있기때문에 255로 나누면 자동으로 minmax 스케일링과 같은 효과를 가지는것 ###
 
X_train[0,:,:] / 255
array([[0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.00392157, 0.        , 0.        ,
        0.05098039, 0.28627451, 0.        , 0.        , 0.00392157,
        0.01568627, 0.        , 0.        , 0.        , 0.        ,
        0.00392157, 0.00392157, 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.01176471, 0.        , 0.14117647,
        0.53333333, 0.49803922, 0.24313725, 0.21176471, 0.        ,
        0.        , 0.        , 0.00392157, 0.01176471, 0.01568627,
        0.        , 0.        , 0.01176471],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.02352941, 0.        , 0.4       ,
        0.8       , 0.69019608, 0.5254902 , 0.56470588, 0.48235294,
        0.09019608, 0.        , 0.        , 0.        , 0.        ,
        0.04705882, 0.03921569, 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.60784314,
        0.9254902 , 0.81176471, 0.69803922, 0.41960784, 0.61176471,
        0.63137255, 0.42745098, 0.25098039, 0.09019608, 0.30196078,
        0.50980392, 0.28235294, 0.05882353],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.00392157, 0.        , 0.27058824, 0.81176471,
        0.8745098 , 0.85490196, 0.84705882, 0.84705882, 0.63921569,
        0.49803922, 0.4745098 , 0.47843137, 0.57254902, 0.55294118,
        0.34509804, 0.6745098 , 0.25882353],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.00392157,
        0.00392157, 0.00392157, 0.        , 0.78431373, 0.90980392,
        0.90980392, 0.91372549, 0.89803922, 0.8745098 , 0.8745098 ,
        0.84313725, 0.83529412, 0.64313725, 0.49803922, 0.48235294,
        0.76862745, 0.89803922, 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.71764706, 0.88235294,
        0.84705882, 0.8745098 , 0.89411765, 0.92156863, 0.89019608,
        0.87843137, 0.87058824, 0.87843137, 0.86666667, 0.8745098 ,
        0.96078431, 0.67843137, 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.75686275, 0.89411765,
        0.85490196, 0.83529412, 0.77647059, 0.70588235, 0.83137255,
        0.82352941, 0.82745098, 0.83529412, 0.8745098 , 0.8627451 ,
        0.95294118, 0.79215686, 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.00392157,
        0.01176471, 0.        , 0.04705882, 0.85882353, 0.8627451 ,
        0.83137255, 0.85490196, 0.75294118, 0.6627451 , 0.89019608,
        0.81568627, 0.85490196, 0.87843137, 0.83137255, 0.88627451,
        0.77254902, 0.81960784, 0.20392157],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.02352941, 0.        , 0.38823529, 0.95686275, 0.87058824,
        0.8627451 , 0.85490196, 0.79607843, 0.77647059, 0.86666667,
        0.84313725, 0.83529412, 0.87058824, 0.8627451 , 0.96078431,
        0.46666667, 0.65490196, 0.21960784],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.01568627,
        0.        , 0.        , 0.21568627, 0.9254902 , 0.89411765,
        0.90196078, 0.89411765, 0.94117647, 0.90980392, 0.83529412,
        0.85490196, 0.8745098 , 0.91764706, 0.85098039, 0.85098039,
        0.81960784, 0.36078431, 0.        ],
       [0.        , 0.        , 0.00392157, 0.01568627, 0.02352941,
        0.02745098, 0.00784314, 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.92941176, 0.88627451, 0.85098039,
        0.8745098 , 0.87058824, 0.85882353, 0.87058824, 0.86666667,
        0.84705882, 0.8745098 , 0.89803922, 0.84313725, 0.85490196,
        1.        , 0.30196078, 0.        ],
       [0.        , 0.01176471, 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.24313725,
        0.56862745, 0.8       , 0.89411765, 0.81176471, 0.83529412,
        0.86666667, 0.85490196, 0.81568627, 0.82745098, 0.85490196,
        0.87843137, 0.8745098 , 0.85882353, 0.84313725, 0.87843137,
        0.95686275, 0.62352941, 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.07058824,
        0.17254902, 0.32156863, 0.41960784, 0.74117647, 0.89411765,
        0.8627451 , 0.87058824, 0.85098039, 0.88627451, 0.78431373,
        0.80392157, 0.82745098, 0.90196078, 0.87843137, 0.91764706,
        0.69019608, 0.7372549 , 0.98039216, 0.97254902, 0.91372549,
        0.93333333, 0.84313725, 0.        ],
       [0.        , 0.22352941, 0.73333333, 0.81568627, 0.87843137,
        0.86666667, 0.87843137, 0.81568627, 0.8       , 0.83921569,
        0.81568627, 0.81960784, 0.78431373, 0.62352941, 0.96078431,
        0.75686275, 0.80784314, 0.8745098 , 1.        , 1.        ,
        0.86666667, 0.91764706, 0.86666667, 0.82745098, 0.8627451 ,
        0.90980392, 0.96470588, 0.        ],
       [0.01176471, 0.79215686, 0.89411765, 0.87843137, 0.86666667,
        0.82745098, 0.82745098, 0.83921569, 0.80392157, 0.80392157,
        0.80392157, 0.8627451 , 0.94117647, 0.31372549, 0.58823529,
        1.        , 0.89803922, 0.86666667, 0.7372549 , 0.60392157,
        0.74901961, 0.82352941, 0.8       , 0.81960784, 0.87058824,
        0.89411765, 0.88235294, 0.        ],
       [0.38431373, 0.91372549, 0.77647059, 0.82352941, 0.87058824,
        0.89803922, 0.89803922, 0.91764706, 0.97647059, 0.8627451 ,
        0.76078431, 0.84313725, 0.85098039, 0.94509804, 0.25490196,
        0.28627451, 0.41568627, 0.45882353, 0.65882353, 0.85882353,
        0.86666667, 0.84313725, 0.85098039, 0.8745098 , 0.8745098 ,
        0.87843137, 0.89803922, 0.11372549],
       [0.29411765, 0.8       , 0.83137255, 0.8       , 0.75686275,
        0.80392157, 0.82745098, 0.88235294, 0.84705882, 0.7254902 ,
        0.77254902, 0.80784314, 0.77647059, 0.83529412, 0.94117647,
        0.76470588, 0.89019608, 0.96078431, 0.9372549 , 0.8745098 ,
        0.85490196, 0.83137255, 0.81960784, 0.87058824, 0.8627451 ,
        0.86666667, 0.90196078, 0.2627451 ],
       [0.18823529, 0.79607843, 0.71764706, 0.76078431, 0.83529412,
        0.77254902, 0.7254902 , 0.74509804, 0.76078431, 0.75294118,
        0.79215686, 0.83921569, 0.85882353, 0.86666667, 0.8627451 ,
        0.9254902 , 0.88235294, 0.84705882, 0.78039216, 0.80784314,
        0.72941176, 0.70980392, 0.69411765, 0.6745098 , 0.70980392,
        0.80392157, 0.80784314, 0.45098039],
       [0.        , 0.47843137, 0.85882353, 0.75686275, 0.70196078,
        0.67058824, 0.71764706, 0.76862745, 0.8       , 0.82352941,
        0.83529412, 0.81176471, 0.82745098, 0.82352941, 0.78431373,
        0.76862745, 0.76078431, 0.74901961, 0.76470588, 0.74901961,
        0.77647059, 0.75294118, 0.69019608, 0.61176471, 0.65490196,
        0.69411765, 0.82352941, 0.36078431],
       [0.        , 0.        , 0.29019608, 0.74117647, 0.83137255,
        0.74901961, 0.68627451, 0.6745098 , 0.68627451, 0.70980392,
        0.7254902 , 0.7372549 , 0.74117647, 0.7372549 , 0.75686275,
        0.77647059, 0.8       , 0.81960784, 0.82352941, 0.82352941,
        0.82745098, 0.7372549 , 0.7372549 , 0.76078431, 0.75294118,
        0.84705882, 0.66666667, 0.        ],
       [0.00784314, 0.        , 0.        , 0.        , 0.25882353,
        0.78431373, 0.87058824, 0.92941176, 0.9372549 , 0.94901961,
        0.96470588, 0.95294118, 0.95686275, 0.86666667, 0.8627451 ,
        0.75686275, 0.74901961, 0.70196078, 0.71372549, 0.71372549,
        0.70980392, 0.69019608, 0.65098039, 0.65882353, 0.38823529,
        0.22745098, 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.15686275, 0.23921569, 0.17254902,
        0.28235294, 0.16078431, 0.1372549 , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        ]])

 

# 이걸 전체에 적용하여 X_train으로 저장
 
X_train = X_train / 255

 

# test도 동일하게 적용
 
X_test = X_test / 255

 

다음 (2) 게시글로 학습과 예측 및 저장 진행

반응형