딥러닝
라이브러리
* 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]
출력 :
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 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등이 사용됨 

<이진 분류 시 둘 중 하나를 출력 시킬때>
※ 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)
출력 :

※ 손실율과 정확도가 오르기도 하고 내려가기도 함.
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()
출력 :

'인공지능 > 딥러닝' 카테고리의 다른 글
| [딥러닝DL] DNN 회귀데이터 사용 (1) | 2024.01.05 | 
|---|---|
| [딥러닝DL] 심층신경망 훈련 및 성능향상2 - 성능규제(Dropout), 모델 저장 및 불러오기, 콜백함수(ModelCheckpoint, EarlyStopping) (1) | 2024.01.05 | 
| [딥러닝DL] 심층신경망(DNN) 훈련 및 성능향상 - verbose, epoch, history, 시각화 (2) | 2024.01.03 | 
| [딥러닝] 신경망계층 추가방법 및 성능향상방법 - 옵티마이저 (1) | 2024.01.03 | 
| [딥러닝]딥러닝 환경설정하기 + 가상환경 생성 (0) | 2023.12.29 | 
 
									
								 
									
								 
									
								 
									
								