첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ 다층 퍼셉트론 신경망 만들기 (MNIST)

----------------------------------------------------------------------------------------------------

import keras.datasets.mnist as mnist

import keras.layers as layers

import keras.models as models

import keras.utils.np_utils as np_utils

import matplotlib.pyplot as pp

import numpy as np

 

print("데이터 로드를 시작합니다.")

 

(trainInputNDArray, trainCottectOutputNDArray), (testInputNDArray, testCorrectOutputNDArray) = mnist.load_data()

 

trainInputNDArray         = trainInputNDArray.reshape(60000, 784).astype("float32") / 255.0

testInputNDArray          = testInputNDArray.reshape(10000, 784).astype("float32") / 255.0

trainCottectOutputNDArray = np_utils.to_categorical(trainCottectOutputNDArray)

testCorrectOutputNDArray  = np_utils.to_categorical(testCorrectOutputNDArray)

 

print("데이터 로드를 종료합니다.")

 

print("모델 정의를 시작합니다.")

 

model = models.Sequential()

 

model.add(layers.Dense(units = 64, input_dim = 28 * 28, activation = "relu"))

model.add(layers.Dense(units = 10, activation = "softmax"))

 

model.compile(loss = "categorical_crossentropy", optimizer = "sgd", metrics = ["accuracy"])

 

print("모델 정의를 종료합니다.")

 

print("모델 학습을 시작합니다.")

 

history = model.fit(trainInputNDArray, trainCottectOutputNDArray, epochs = 5, batch_size = 32)

 

print("모델 학습을 종료합니다.")

 

print("훈련 손실   : ", history.history["loss"])

print("훈련 정확도 : ", history.history["acc" ])

 

print("모델 평가를 시작합니다.")

 

evaluationList = model.evaluate(testInputNDArray, testCorrectOutputNDArray, batch_size = 32)

 

print("[평가 손실, 평가 정확도] = ", evaluationList)

 

print("모델 평가를 종료합니다.")

 

print("모델 데이터 저장을 시작합니다.")

 

model.save("model.data")

 

print("모델 데이터 저장을 종료합니다.")

 

print("모델 사용을 시작합니다.")

 

inputNDArray         = testInputNDArray[0:1]

correctOutputNDArray = testCorrectOutputNDArray[0:1]

 

outputNDArray = model.predict(inputNDArray)

 

print("정답 : ", np.argmax(correctOutputNDArray))

print("평가 : ", np.argmax(outputNDArray))

 

print("모델 사용을 종료합니다.")

----------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker

댓글을 달아 주세요