케라스란?
케라스는 모든 종류의 신경망을 손쉽게 만들고 훈련, 평가, 실행할 수 있는 고수준 딥러닝 API
import tensorflow as tf
import tensorflow import keras
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
데이터셋을 적재(픽셀 강도는 0~255 바이트로 표현되어있습니다)
(X_train_full, y_train_full), (X_test,y_test) = keras.datasets.mnist.load_data()
X_train_full.shape # (60000,28,28)
X_train_full.dtype # dtype('uint8')
전체 훈련 세트를 검증 세트와 더 작은 훈련 세트로 나누고, 픽셀강도를 0-1 범위의 실수로 변환합니다.
X_valid, X_train = X_train_full[:5000] / 255. , X_train_full[5000:] / 255.
y_valid, y_train = y_train_full[:5000] , y_train_full[5000:]
X_test = X_test / 255.
맷플로립의 imshow() 함수와 binary 컬러맵으로 첫번째 데이터를 출력 해보면,
다음과 같은 데이터를 출력할 수 있습니다.
위와 같이 데이터셋에 있는 이미지 샘플 40개 정도를 더 추출해보겠습니다.
위에서는 적재된 MNIST 데이터셋의 이미지를 나타내보았고, 다음은 간단한 밀집 신경망을 만들고 최적의 학습률을 찾아보겠습니다. 반복마다 학습률을 증가 시키기위해 callback을 사용합니다.
keras.backend.set_value(old,new) : old값을 new값으로 바꿔줍니다.
이제 모델을 생성해 보겠습니다.
이 모델은 2개의 은닉층을 갖고, 하나의 출력층을 갖습니다.
이제 모델의 loss, optimizer, metrics을 정해야 하므로 compile() 메서드를 사용합니다.
이 모델을 1 에포크만 훈련해보고 이에 대한 손실함수를 그려보겠습니다.
학습률이 6e-1을 지날때 급격하게 증가하므로 3e-1을 학습률로 사용하여 다시 모델을 만들어보겠습니다.
이 모델로 훈련을 다시 수행해보면,
약 98%의 정확도가 나오는것을 확인할 수 있습니다.
'# AI 이론 > DeepLearning' 카테고리의 다른 글
배치 정규화 (0) | 2022.04.20 |
---|---|
케라스를 이용한 인공 신경망 만들기(하이퍼파라미터 튜닝) (0) | 2022.04.19 |
밑바닥부터 시작하는 딥러닝3 내용정리 (0) | 2022.03.21 |
밑바닥부터 딥러닝3 - 고차 미분 (0) | 2022.03.14 |
합성곱 신경망(CNN) (2) | 2022.03.03 |