728x90
728x170
■ 히스토리 기능을 사용하는 방법을 보여준다.
▶ 예제 코드 (PY)
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
np.random.seed(3)
# 데이터를 로드한다.
(trainInputNDArray, trainCorrectOutputNDArray), (testInputNDArray, testCorrectOutputNDArray) = mnist.load_data()
# 훈련 데이터에서 검증 데이터와 훈련 데이터를 나눈다.
validationInputNDArray = trainInputNDArray[50000:]
validationCorrectOutputNDArray = trainCorrectOutputNDArray[50000:]
trainInputNDArray = trainInputNDArray[:50000]
trainCorrectOutputNDArray = trainCorrectOutputNDArray[:50000]
# 데이터셋 전처리
trainInputNDArray = trainInputNDArray.reshape(50000, 784).astype("float32") / 255.0
validationInputNDArray = validationInputNDArray.reshape(10000, 784).astype("float32") / 255.0
testInputNDArray = testInputNDArray.reshape(10000, 784).astype("float32") / 255.0
# 훈련/검증 데이터를 랜덤하게 섞는다.
randomTrainIndexNDArray = np.random.choice(50000, 700)
trainInputNDArray = trainInputNDArray[randomTrainIndexNDArray]
trainCorrectOutputNDArray = trainCorrectOutputNDArray[randomTrainIndexNDArray]
randomValidationIndexNDArray = np.random.choice(10000, 300)
validationInputNDArray = validationInputNDArray[randomValidationIndexNDArray]
validationCorrectOutputNDArray = validationCorrectOutputNDArray[randomValidationIndexNDArray]
# 정답 데이터를 인코딩 한다.
trainCorrectOutputNDArray = np_utils.to_categorical(trainCorrectOutputNDArray)
validationCorrectOutputNDArray = np_utils.to_categorical(validationCorrectOutputNDArray)
testCorrectOutputNDArray = np_utils.to_categorical(testCorrectOutputNDArray)
# 모델을 정의한다.
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"])
# 모델을 학습시킨다.
history = model.fit(trainInputNDArray, trainCorrectOutputNDArray, epochs = 1000, batch_size = 100, validation_data = (validationInputNDArray, validationCorrectOutputNDArray))
# 학습 과정을 조회한다.
figure, lossAxes = pp.subplots()
accuracyAxes = lossAxes.twinx()
lossAxes.plot(history.history["loss" ], "y", label = "train loss")
lossAxes.plot(history.history["val_loss"], "r", label = "val loss" )
lossAxes.set_xlabel("epoch")
lossAxes.set_ylabel("loss")
lossAxes.legend(loc = "upper left")
accuracyAxes.plot(history.history["acc" ], "b", label = "train acc")
accuracyAxes.plot(history.history["val_acc"], "g", label = "val acc" )
accuracyAxes.set_ylabel("accuracy")
accuracyAxes.legend(loc = "lower left")
pp.show()
728x90
그리드형(광고전용)
'Python > keras' 카테고리의 다른 글
[PYTHON/KERAS] Sequential 클래스 : model_from_json 메소드를 사용해 모델 구하기 (0) | 2018.08.20 |
---|---|
[PYTHON/KERAS] Sequential 클래스 : to_json 메소드를 사용해 JSON 문자열 구하기 (0) | 2018.08.20 |
[PYTHON/KERAS] 학습 모델 아키텍처 이미지 저장하기 (0) | 2018.08.19 |
[PYTHON/KERAS] 학습 모델 로드하기 (0) | 2018.08.19 |
[PYTHON/KERAS] 학습 모델 저장하기 (0) | 2018.08.19 |
[PYTHON/KERAS] 학습 조기 종료시키기 (0) | 2018.08.19 |
[PYTHON/KERAS] 커스텀 히스토리 콜백 함수 사용하기 (0) | 2018.08.19 |
[PYTHON/KERAS] 히스토리를 텐서보드와 연동하기 (0) | 2018.08.19 |
[PYTHON/KERAS] 모델 데이터 로드하기 (0) | 2018.08.15 |
[PYTHON/KERAS] 다층 퍼셉트론 신경망 만들기 (MNIST) (0) | 2018.08.15 |