지금까지 내용을 스크립트 하나로 정리하면 다음과 같습니다.
실습 | MNIST 손글씨 인식하기: 기본 프레임
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping from tensorflow.keras.datasets import mnist from tensorflow.keras.utils import to_categorical import matplotlib.pyplot as plt import numpy as np import os # MNIST 데이터를 불러옵니다. ( , ), ( , ) = mnist.load_data() # 차원 변환 후, 테스트셋과 학습셋으로 나눕니다. = .reshape( .shape[0], 784).astype('float32') / 255 = .reshape( .shape[0], 784).astype('float32') / 255 = to_categorical( , 10) = to_categorical( , 10) # 모델 구조를 설정합니다. = Sequential() .add(Dense(512, =784, ='relu')) .add(Dense(10, ='softmax')) .summary() # 모델 실행 환경을 설정합니다. .compile( ='categorical_crossentropy', ='adam', =['accuracy']) # 모델 최적화를 위한 설정 구간입니다. = "./MNIST_MLP.hdf5" = ModelCheckpoint( = , ='val_loss', =1, = ) = EarlyStopping( ='val_loss', =10) # 모델을 실행합니다. = .fit( , , =0.25, =30, =200, =0, =[ , ]) # 테스트 정확도를 출력합니다. print("\n Test Accuracy: " % ( .evaluate( , )[1])) # 검증셋과 학습셋의 오차를 저장합니다. = .history['val_loss'] = .history['loss'] # 그래프로 표현해 봅니다. = np. (len( )) plt.plot( , , ='.', ="red", ='Testset_loss') plt.plot( , , ='.', ="blue", ='Trainset_loss') # 그래프에 그리드를 주고 레이블을 표시해 보겠습니다. plt.legend( ='upper right') plt.grid() plt.xlabel('epoch') plt.ylabel('loss') plt.show()