본문 바로가기

인공지능/딥러닝

[딥러닝] 인공신경망 훈련모델 맛보기

~ 목차 ~

딥러닝

라이브러리

* tensorflow는 프레임워크라고 함
* 텐서플로우 안에 keras가 딥러닝 내용을 가지고 있음
* keras는 딥러닝 모델을 쉽게 정의하고 훈련시키기 위한 고수준 API를 제공하는 인기 있는 딥러닝 라이브러리


import tensorflow as tf
from tensorflow import keras

import matplotlib.pyplot as plt
import numpy as np


 

  - 실행 결과를 동일하게 하기 위한 처리(완전 동일하지 않을 수도 있음)

 


tf.keras.utils.set_random_seed(42)

 

- 연산 고정


tf.config.experimental.enable_op_determinism()

 

데이터 수집

* keras에서 제공해주는 이미지 데이터셋 사용

    - MNIST 패션 이미지

    - 이미지 데이터는 픽셀 데이터로 이루어져 있습니다.

 


(train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data()

print(train_input.shape , train_target.shape)
print(test_input.shape , test_target.shape)

출력 : (60000, 28, 28) (60000,)
            (10000, 28, 28) (10000,)

 

※ 첫번째()에는 train데이터 튜플로 가져오고 두번째()에는 test데이터 튜플로 가져오기

※ (60000, 28, 28) : 60000개 행, 높이 28, 너비 28개 데이터

 

 


 

* 이미지 1개에 대한 데이터 추출

    - 각 데이터는 픽셀값(색상값)

    - 픽셀값(색상값)은 0~255 (총 256개의 값들로 구성되어 있음)

 


train_input[0]

출력 : 

더보기

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,   1,
          0,   0,  13,  73,   0,   0,   1,   4,   0,   0,   0,   0,   1,
          1,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   3,
          0,  36, 136, 127,  62,  54,   0,   0,   0,   1,   3,   4,   0,
          0,   3],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   6,
          0, 102, 204, 176, 134, 144, 123,  23,   0,   0,   0,   0,  12,
         10,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0, 155, 236, 207, 178, 107, 156, 161, 109,  64,  23,  77, 130,
         72,  15],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   0,
         69, 207, 223, 218, 216, 216, 163, 127, 121, 122, 146, 141,  88,
        172,  66],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   1,   1,   0,
        200, 232, 232, 233, 229, 223, 223, 215, 213, 164, 127, 123, 196,
        229,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        183, 225, 216, 223, 228, 235, 227, 224, 222, 224, 221, 223, 245,
        173,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        193, 228, 218, 213, 198, 180, 212, 210, 211, 213, 223, 220, 243,
        202,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   3,   0,  12,
        219, 220, 212, 218, 192, 169, 227, 208, 218, 224, 212, 226, 197,
        209,  52],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   6,   0,  99,
        244, 222, 220, 218, 203, 198, 221, 215, 213, 222, 220, 245, 119,
        167,  56],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   4,   0,   0,  55,
        236, 228, 230, 228, 240, 232, 213, 218, 223, 234, 217, 217, 209,
         92,   0],
       [  0,   0,   1,   4,   6,   7,   2,   0,   0,   0,   0,   0, 237,
        226, 217, 223, 222, 219, 222, 221, 216, 223, 229, 215, 218, 255,
         77,   0],
       [  0,   3,   0,   0,   0,   0,   0,   0,   0,  62, 145, 204, 228,
        207, 213, 221, 218, 208, 211, 218, 224, 223, 219, 215, 224, 244,
        159,   0],
       [  0,   0,   0,   0,  18,  44,  82, 107, 189, 228, 220, 222, 217,
        226, 200, 205, 211, 230, 224, 234, 176, 188, 250, 248, 233, 238,
        215,   0],
       [  0,  57, 187, 208, 224, 221, 224, 208, 204, 214, 208, 209, 200,
        159, 245, 193, 206, 223, 255, 255, 221, 234, 221, 211, 220, 232,
        246,   0],
       [  3, 202, 228, 224, 221, 211, 211, 214, 205, 205, 205, 220, 240,
         80, 150, 255, 229, 221, 188, 154, 191, 210, 204, 209, 222, 228,
        225,   0],
       [ 98, 233, 198, 210, 222, 229, 229, 234, 249, 220, 194, 215, 217,
        241,  65,  73, 106, 117, 168, 219, 221, 215, 217, 223, 223, 224,
        229,  29],
       [ 75, 204, 212, 204, 193, 205, 211, 225, 216, 185, 197, 206, 198,
        213, 240, 195, 227, 245, 239, 223, 218, 212, 209, 222, 220, 221,
        230,  67],
       [ 48, 203, 183, 194, 213, 197, 185, 190, 194, 192, 202, 214, 219,
        221, 220, 236, 225, 216, 199, 206, 186, 181, 177, 172, 181, 205,
        206, 115],
       [  0, 122, 219, 193, 179, 171, 183, 196, 204, 210, 213, 207, 211,
        210, 200, 196, 194, 191, 195, 191, 198, 192, 176, 156, 167, 177,
        210,  92],
       [  0,   0,  74, 189, 212, 191, 175, 172, 175, 181, 185, 188, 189,
        188, 193, 198, 204, 209, 210, 210, 211, 188, 188, 194, 192, 216,
        170,   0],
       [  2,   0,   0,   0,  66, 200, 222, 237, 239, 242, 246, 243, 244,
        221, 220, 193, 191, 179, 182, 182, 181, 176, 166, 168,  99,  58,
          0,   0],
       [  0,   0,   0,   0,   0,   0,   0,  40,  61,  44,  72,  41,  35,
          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0],
       [  0,   0,   0,   0,   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)

 


 

훈련데이터 10개만 이용해서 데이터를 이미지로 시각화하기

* 서브플롯 사용 : 이미지 10개를 하나로 시각화

* 픽셀데이터를 이미지로 시각화 : imshow()

 

* x, y 좌표계 숨기기 : axis("off")

 



fig, axs = plt.subplots(1, 10, figsize=(10, 10))

"""훈련데이터 10개에 대한 처리"""
for i in range(10):
    axs[i].imshow(train_input[i], cmap="gray_r")
    axs[i].axis("off")

plt.show()

출력 : 

 

 


 

* 종속변수 10개 추출해서 매핑된 값 확인해 보기


train_target[:10]

출력 : array([9, 0, 0, 3, 0, 2, 7, 2, 5, 5], dtype=uint8)

 

* 종속변수의 범주값 확인하기

 - unique()에서 return_counts=True : 하면 train_target에 있는 범주의 갯수를 세어줌.


np.unique(train_target, return_counts=True)

출력 : (array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=uint8),
 array([6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000],
       dtype=int64))

 

 


 

 

데이터 스케일링

- 사용되는 데이터의 특성상 0부터 255까지의 값을 가지고 있음
- 값의 범위폭이 크기 때문에 일반화(정규화)하여 사용
- 정규화를 수행하는 방법으로 라이브러리를 사용해도 되며, 
  값의 최대값을 이용해 산술연산을 이용해서 데이터 스케일링을 해도 된다.


train_input[0]

출력 : 

더보기
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,   1,
          0,   0,  13,  73,   0,   0,   1,   4,   0,   0,   0,   0,   1,
          1,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   3,
          0,  36, 136, 127,  62,  54,   0,   0,   0,   1,   3,   4,   0,
          0,   3],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   6,
          0, 102, 204, 176, 134, 144, 123,  23,   0,   0,   0,   0,  12,
         10,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0, 155, 236, 207, 178, 107, 156, 161, 109,  64,  23,  77, 130,
         72,  15],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   0,
         69, 207, 223, 218, 216, 216, 163, 127, 121, 122, 146, 141,  88,
        172,  66],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   1,   1,   0,
        200, 232, 232, 233, 229, 223, 223, 215, 213, 164, 127, 123, 196,
        229,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        183, 225, 216, 223, 228, 235, 227, 224, 222, 224, 221, 223, 245,
        173,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        193, 228, 218, 213, 198, 180, 212, 210, 211, 213, 223, 220, 243,
        202,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   3,   0,  12,
        219, 220, 212, 218, 192, 169, 227, 208, 218, 224, 212, 226, 197,
        209,  52],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   6,   0,  99,
        244, 222, 220, 218, 203, 198, 221, 215, 213, 222, 220, 245, 119,
        167,  56],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   4,   0,   0,  55,
        236, 228, 230, 228, 240, 232, 213, 218, 223, 234, 217, 217, 209,
         92,   0],
       [  0,   0,   1,   4,   6,   7,   2,   0,   0,   0,   0,   0, 237,
        226, 217, 223, 222, 219, 222, 221, 216, 223, 229, 215, 218, 255,
         77,   0],
       [  0,   3,   0,   0,   0,   0,   0,   0,   0,  62, 145, 204, 228,
        207, 213, 221, 218, 208, 211, 218, 224, 223, 219, 215, 224, 244,
        159,   0],
       [  0,   0,   0,   0,  18,  44,  82, 107, 189, 228, 220, 222, 217,
        226, 200, 205, 211, 230, 224, 234, 176, 188, 250, 248, 233, 238,
        215,   0],
       [  0,  57, 187, 208, 224, 221, 224, 208, 204, 214, 208, 209, 200,
        159, 245, 193, 206, 223, 255, 255, 221, 234, 221, 211, 220, 232,
        246,   0],
       [  3, 202, 228, 224, 221, 211, 211, 214, 205, 205, 205, 220, 240,
         80, 150, 255, 229, 221, 188, 154, 191, 210, 204, 209, 222, 228,
        225,   0],
       [ 98, 233, 198, 210, 222, 229, 229, 234, 249, 220, 194, 215, 217,
        241,  65,  73, 106, 117, 168, 219, 221, 215, 217, 223, 223, 224,
        229,  29],
       [ 75, 204, 212, 204, 193, 205, 211, 225, 216, 185, 197, 206, 198,
        213, 240, 195, 227, 245, 239, 223, 218, 212, 209, 222, 220, 221,
        230,  67],
       [ 48, 203, 183, 194, 213, 197, 185, 190, 194, 192, 202, 214, 219,
        221, 220, 236, 225, 216, 199, 206, 186, 181, 177, 172, 181, 205,
        206, 115],
       [  0, 122, 219, 193, 179, 171, 183, 196, 204, 210, 213, 207, 211,
        210, 200, 196, 194, 191, 195, 191, 198, 192, 176, 156, 167, 177,
        210,  92],
       [  0,   0,  74, 189, 212, 191, 175, 172, 175, 181, 185, 188, 189,
        188, 193, 198, 204, 209, 210, 210, 211, 188, 188, 194, 192, 216,
        170,   0],
       [  2,   0,   0,   0,  66, 200, 222, 237, 239, 242, 246, 243, 244,
        221, 220, 193, 191, 179, 182, 182, 181, 176, 166, 168,  99,  58,
          0,   0],
       [  0,   0,   0,   0,   0,   0,   0,  40,  61,  44,  72,  41,  35,
          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0],
       [  0,   0,   0,   0,   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)

 


 

* 데이터 스케일링 수행하기

 - 훈련 데이터


train_scaled_255 = train_input / 255.0
train_scaled_255[0]

출력 : 

더보기

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.        ]])

 

 - 테스트 데이터


test_scaled_255 = test_input / 255.0
test_scaled_255[0]

출력 : 

더보기

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.01176471,
        0.00392157, 0.        , 0.        , 0.02745098, 0.        ,
        0.14509804, 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.00392157, 0.00784314,
        0.        , 0.10588235, 0.32941176, 0.04313725, 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.46666667, 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.00392157, 0.        ,
        0.        , 0.34509804, 0.56078431, 0.43137255, 0.        ,
        0.        , 0.        , 0.        , 0.08627451, 0.36470588,
        0.41568627, 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.01568627, 0.        ,
        0.20784314, 0.50588235, 0.47058824, 0.57647059, 0.68627451,
        0.61568627, 0.65098039, 0.52941176, 0.60392157, 0.65882353,
        0.54901961, 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.00784314, 0.        , 0.04313725,
        0.5372549 , 0.50980392, 0.50196078, 0.62745098, 0.69019608,
        0.62352941, 0.65490196, 0.69803922, 0.58431373, 0.59215686,
        0.56470588, 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.00392157, 0.        , 0.00784314, 0.00392157,
        0.        , 0.01176471, 0.        , 0.        , 0.45098039,
        0.44705882, 0.41568627, 0.5372549 , 0.65882353, 0.6       ,
        0.61176471, 0.64705882, 0.65490196, 0.56078431, 0.61568627,
        0.61960784, 0.04313725, 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.00392157,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.01176471, 0.        , 0.        , 0.34901961, 0.54509804,
        0.35294118, 0.36862745, 0.6       , 0.58431373, 0.51372549,
        0.59215686, 0.6627451 , 0.6745098 , 0.56078431, 0.62352941,
        0.6627451 , 0.18823529, 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.00784314, 0.01568627, 0.00392157, 0.        ,
        0.        , 0.        , 0.38431373, 0.53333333, 0.43137255,
        0.42745098, 0.43137255, 0.63529412, 0.52941176, 0.56470588,
        0.58431373, 0.62352941, 0.65490196, 0.56470588, 0.61960784,
        0.6627451 , 0.46666667, 0.        ],
       [0.        , 0.        , 0.00784314, 0.00784314, 0.00392157,
        0.00784314, 0.        , 0.        , 0.        , 0.        ,
        0.10196078, 0.42352941, 0.45882353, 0.38823529, 0.43529412,
        0.45882353, 0.53333333, 0.61176471, 0.5254902 , 0.60392157,
        0.60392157, 0.61176471, 0.62745098, 0.55294118, 0.57647059,
        0.61176471, 0.69803922, 0.        ],
       [0.01176471, 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.08235294, 0.20784314, 0.36078431,
        0.45882353, 0.43529412, 0.40392157, 0.45098039, 0.50588235,
        0.5254902 , 0.56078431, 0.60392157, 0.64705882, 0.66666667,
        0.60392157, 0.59215686, 0.60392157, 0.56078431, 0.54117647,
        0.58823529, 0.64705882, 0.16862745],
       [0.        , 0.        , 0.09019608, 0.21176471, 0.25490196,
        0.29803922, 0.33333333, 0.4627451 , 0.50196078, 0.48235294,
        0.43529412, 0.44313725, 0.4627451 , 0.49803922, 0.49019608,
        0.54509804, 0.52156863, 0.53333333, 0.62745098, 0.54901961,
        0.60784314, 0.63137255, 0.56470588, 0.60784314, 0.6745098 ,
        0.63137255, 0.74117647, 0.24313725],
       [0.        , 0.26666667, 0.36862745, 0.35294118, 0.43529412,
        0.44705882, 0.43529412, 0.44705882, 0.45098039, 0.49803922,
        0.52941176, 0.53333333, 0.56078431, 0.49411765, 0.49803922,
        0.59215686, 0.60392157, 0.56078431, 0.58039216, 0.49019608,
        0.63529412, 0.63529412, 0.56470588, 0.54117647, 0.6       ,
        0.63529412, 0.76862745, 0.22745098],
       [0.2745098 , 0.6627451 , 0.50588235, 0.40784314, 0.38431373,
        0.39215686, 0.36862745, 0.38039216, 0.38431373, 0.4       ,
        0.42352941, 0.41568627, 0.46666667, 0.47058824, 0.50588235,
        0.58431373, 0.61176471, 0.65490196, 0.74509804, 0.74509804,
        0.76862745, 0.77647059, 0.77647059, 0.73333333, 0.77254902,
        0.74117647, 0.72156863, 0.14117647],
       [0.0627451 , 0.49411765, 0.67058824, 0.7372549 , 0.7372549 ,
        0.72156863, 0.67058824, 0.6       , 0.52941176, 0.47058824,
        0.49411765, 0.49803922, 0.57254902, 0.7254902 , 0.76470588,
        0.81960784, 0.81568627, 1.        , 0.81960784, 0.69411765,
        0.96078431, 0.98823529, 0.98431373, 0.98431373, 0.96862745,
        0.8627451 , 0.80784314, 0.19215686],
       [0.        , 0.        , 0.        , 0.04705882, 0.2627451 ,
        0.41568627, 0.64313725, 0.7254902 , 0.78039216, 0.82352941,
        0.82745098, 0.82352941, 0.81568627, 0.74509804, 0.58823529,
        0.32156863, 0.03137255, 0.        , 0.        , 0.        ,
        0.69803922, 0.81568627, 0.7372549 , 0.68627451, 0.63529412,
        0.61960784, 0.59215686, 0.04313725],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        ],
       [0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        ]])

- 차원 확인


train_scaled_255.shape, test_scaled_255.shape

출력 : ((60000, 28, 28), (10000, 28, 28))

 

* 모델 훈련에 사용하기 위해서는 2차원으로 변환

 - reshape : 배열의 형태를 변경
 -  -1은 해당 차원의 크기를 자동으로 계산하라는 의미
 -  28*28은 각 이미지의 크기가 28x28 픽셀이라는 것을 고려하여 1차원 배열로 펼칠 때의 길이를 나타냅니다


train_scaled_2d = train_scaled_255.reshape(-1, 28*28)
train_scaled_2d.shape

출력 :(60000, 784)


훈련 : 검증 데이터로 분리 ( 8 : 2 )


train_scaled, val_scaled, train_target, val_target = train_test_split(train_scaled_2d, train_target
                                                                     ,test_size=0.2,
                                                                     random_state=42)
print(train_scaled.shape, train_target.shape)
print(val_scaled.shape, val_target.shape)

출력 : (48000, 784) (48000,)
           (12000, 784) (12000,)


 

 

< 딥러닝 >
딥러닝은 계층 구조의 모델로 구성됨

1.인공신경망 계층(layer) 생성하기
   - Dense() : 딥러닝에서 가장 기본적인 계층
                     : 모델에 넣어서 훈련을 수행하게 됨
                     : 신경망 계층 클래스

   - 딥러닝에서 사용하는 용어
      → 특성 : 뉴런 이라고 칭합니다.
      → 크기 : 갯수를 의미합니다.

   - 딥러닝에서 사용되는 숫자들의 범위
       → 일반적으로 딥러닝에서는 숫자의 범위를 16~512 또는 32~512로 사용함
       → 높이와 너비를 나타내는 숫자가 있는 경우에는 3x3 또는 5x5를 주로 사용함

   - 모델에는 여러개의 계층(layer)이 사용될 수 있음
      → 첫번째 계층 : 입력 계층(Input layer)이라고 칭한다.
                  : 입력 계층에는 input_shape()가 정의됨.
                  : input_shape()에는 독립변수의 열갯수를 정의함.
                  : 모델에서 한개의 계층만 사용되는 경우에는 입력 계층이 곧, 
                    출력 계층의 역할까지 수행.
                   → 이 경우에는 출력 크기의 갯수는 종속변수의 범주 갯수를 정의.
                  
      → 중간 계층 : 은닉 계층(Hidden layer)이라고 칭한다.
                 : 은닉 계층은 여러개 사용됨
                 : 은닉 계층의 출력 크기(갯수)는 일정하지 않음
                 : 출력 크기(갯수)는 사람이 정함
                 : 출력 크기(갯수)는 다음 은닉계층이 입력 크기(갯수)로 받아서 훈련을 이어 가는 방식.
                 
      → 마지막 계층 : 출력 계층(Output layer)이라고 칭한다.
                  : 출력 계층에 사용되는 출력 크기는 종속변수의 범주 갯수를 정의함.    

   - units : 특정 계층에서의 출력의 크기(갯수), 결과갯수
      → 딥러닝 모델에는 계층이 여러개 사용될 수 있으며, 
           마지막 계층에는 units의 갯수종속변수 범주의 갯수를 사용함.
      → 중간에 사용되는 계층을 은닉계층(hidden layer)이라고 칭하며,
           중간에 사용되는 계층 간에는 출력 크기를 넘겨받아서 사용됨.
      → 중간 계층의 출력 크기에 따라서 성능에 영향을 미칠 수도 있기 때문에
            하이퍼파라메터 튜닝을 진행하는 경우도 있다.
      → 하이퍼파라메터 튜닝은 값을 바꾸면서 여러번 시도하는 방식을 따른다.

   - kernel_initializer : 가중치를 초기화하는 방법을 지정
      → 가중치 : 손실을 최소화하도록 하기위해서
                           모델이 훈련을 반복하는 과정에서 스스로 조정하는 값을 의미함
      → 가중치 초기화 방법 : uniform, normal 방법이 있음
    * uniform : 균일 분포 방법, 일정한 분포에서 무작위로 값을 선택
                      : 일반적으로 많이 사용(default값)
    * normal  : 가우시안 분포(정규 분포) 방법, 정규 분포에서 무작위로 값을 선택

   - activation : 활성화 함수라고 칭합니다.
       → 훈련 시 입력된 특성(뉴런)의 크기를, 어떤 형태의 크기로 변환할지를 결정하는 방법 정의
       → 출력계층(Output Layer)에는 해당 종속변수의 특성에 따라 결정됨
       → 선형형태인 회귀분석의 경우 linear 사용
       → 범주형태의 분류분석의 경우에는 sigmoid, softmax, relu, tanh, leakyRelu등이 사용
             → 이진분류 : sigmoid,  relu, tanh, leakyRelu
             → 다중분류 : softmax
        →입력계층 또는 은닉계층에는 : linear, sigmoid, softmax, relu, tanh, leakyRelu등이 사용됨

activation

<이진 분류 시 둘 중 하나를 출력 시킬때>

※ sigmoid : 0.5이상 나와야 1이 됨  (1보다 큰 값에서는 명확성이 떨어짐)

※ ReLU : 0보다 큰놈이 나와야 1이 됨 (0보다 작으면 출력에서 제외)

※ Leaky ReLU : -값도 일부는 허용해 주겠다. ==> 가장 많이 사용 ⭐⭐⭐

※ Tanh : -값도 허용하겠다.

    ==> 마지막 계층에 sigmoid, ReLU  많이 사용(-값 없어서)

 

1. 인공신경망 계층(layer) 생성


### 입력 계층
dense = keras.layers.Dense(
    units=10,
    kernel_initializer="uniform",
    # 범주가 10개 이상이라 softmax를 사용했음.
    activation="softmax",
    # 784개의 특성(feature)을 가진 1차원 배열, 784는 28x28 크기의 이미지를 1차원 배열로 펼쳤을 때의 크기
    # 32(2^5)~512(2^9)까지의 범위를 많이 사용함
    input_shape=(784, )
)
dense

출력 : <keras.layers.core.dense.Dense at 0x22cc91278b0>

2. 인공신경망 모델 생성하기


### 모델에서 한개의 계층만 사용되는 경우에는 입력 계층이 곧, 출력 계층의 역할까지 수행
model = keras.Sequential(dense)
model

출력 : <keras.engine.sequential.Sequential at 0x22cc9119cd0>

 

"인공신경망 계층(layer) 생성", " 인공신경망 모델 생성하기" 의 순서는 바뀌어도 괜찮다.

 

 

 


< 모델 설정 단계 >
 - loss : 손실을 줄이기 위해 사용되는 함수 정의 
            : 손실함수에는
             categorical_crossentropy, binary_crossentropy, sparse_categorical_crossentropy 가 있음

  - categorical_crossentropy : 다중분류 손실함수
    → 종속변수의 데이터 값이 원-핫인코딩된 형태로 되어 있는 경우 사용
    → 예시 데이터 : [[0, 1, 0], [0, 0, 1], [0, 1, 0] ...]

  - sparse_categorical_crossentropy : 다중분류 손실함수
    → 종속변수의 데이터 값이 숫자값으로 되어 있는 경우 사용
    → 예시 데이터 : [0, 1, 2, 3, 4 ...]

  - binary_crossentropy : 이진분류 손실함수
    → 종속변수의 데이터 값이 숫자값으로 2개 정의되어 있는 경우
    → 예시 데이터 : [0, 1, 1, 0, 0, 1 ...]

 

원-핫 인코딩 예제 (categorical_crossentropy)

 < 임의 데이터 생성 >
 - randint() : 랜덤하게 정수값을 생성하는 함수
    → 첫번째 인자 : 범주의 범위(0~2 까지로 3개의 범주를 의미함)
    → 두번째 인자 : 몇 개의 랜덤한 범주값을 만들지에 대한 값(10개 생성)

 < 원-핫 인코딩(One-Hot Encoding)하기 >
 - to_categorical() : 각각의 값을 범주의 갯수만큼의 리스트로 데이터 생성
                             : 리스트 내 데이터에서 1이 있는 곳의 위치값은 실제 labels의 값과 동일
       num_classes : unique한 범주의 갯수 정의


import numpy as np
from tensorflow.keras.utils import to_categorical

labels = np.random.randint(3, size=(10, ))
labels

one_hot_labels = to_categorical(labels, num_classes=3)
labels, one_hot_labels.shape, one_hot_labels 

출력 : (array([0, 2, 2, 0, 0, 2, 1, 0, 1, 1]), (10, 3),
 array([[1., 0., 0.], [0., 0., 1.], [0., 0., 1.], [1., 0., 0.], [1., 0., 0.], [0., 0., 1.], [0., 1., 0.], [1., 0., 0.], [0., 1., 0.],[0., 1., 0.]], dtype=float32))

※ 리스트에 3개의 공간을 만들고, label에 따라서 그 인덱스 값에 해당하는 위치에만 1을 넣고 나머지는 0으로 채우는 형태

 

3. 모델 설정 단계

  - 손실함수(loss) : 종속변수의 형태에 따라 결정됨
  - 훈련 시 출력할 값(metrics) : 정확도 출력

  - 이진분류인지, 다중분류인지 해당 속성들을 정의해줌


model.compile(
            ### 손실함수 : 종속변수의 형태에 따라 결정됨
            loss="sparse_categorical_crossentropy",
            ### 훈련 시 출력할 값 : 정확도 출력
            metrics="accuracy")

 

 

4. 모델 훈련시키기

  - epochs : 훈련 반복 횟수


model.fit(train_scaled, train_target, epochs=50)

출력 : 

50번 반복 훈련

※ 손실율과 정확도가 오르기도 하고 내려가기도 함.

 

5. 모델 성능 검증하기

  - evaluate  :  모델 성능 검증하기


score = model.evaluate(val_scaled, val_target)
score

출력 :

375/375 [==============================] - 0s 501us/step - loss: 0.4837 - accuracy: 0.8514]

[0.48367467522621155, 0.8514166474342346]

 

※ 손실율의 우선도가 더 높음, 검증은 높게 나오고 훈련은 낮게 나와야 한다(과소적합 방지).

 

 

<인공신경망 모델 훈련 순서>
1. 모델 생성 (또는 계층 생성)
2. 계층 생성 (또는 모델 생성)
3. 모델 설정 (compile)
4. 모델 훈련 시키기 (fit)
5. 성능 평가 (검증, evaluate)

<성능 개선 방법>
- 데이터 증가 시키기
- 하이퍼파라메터 튜닝 (일반적으로 딥러닝에서는 디폴트 값을 사용해도 됨)
  → 성능이 현저히 낮은 경우에는 튜닝 필요
- 계층을 추가 또는 제거.

<모델에서 사용한 계층 확인하기>
 - output shape : 출력 크기 (10개 출력)
 - Param : Dense() 계층이 훈련 중에 사용한 총 특성의 갯수
   → Dense() 계층 계산공식 = (입력크기 + 1) x 출력크기
                                             = (784 + 1) x 10 = 7850

 

모델에서 사용한 계층 확인하기

 - summary() : 모델에서 사용한 계층 확인 함수


model.summary()

출력 :

계층 확인하기

※ Output Shape (None , 10) : 10개의 출력 크기로 뽑아 내겠다.

    Param : 훈련에 사용된 파라메터 개수 7850개

 

은닉계층(Hidden Layer) 추가하기

 - add() : 계층 추가하기


model.add(
    keras.layers.Dense(
        ### units= 생략해도 됨
        10,
        kernel_initializer="uniform",
        activation="relu",
        input_shape=(784, )
    )
)

 

 - 모델 훈련 : 계층이 추가될때마다 훈련을 다시 시켜야 함 


model.fit(train_scaled, train_target, epochs=50)

출력 : 

모델 훈련

 

 - 모델 성능 검증하기 


model.evaluate(val_scaled, val_target)

출력 : 375/375 [==============================] - 0s 517us/step - loss: 0.6700 - accuracy: 0.8397

          [0.670021653175354, 0.8397499918937683]

 

 

 - 계층 확인하기


model.summary()

출력 :

계층확인하기

 

 

728x90