케라스, 학습 모델을 파일에 저장하기, 읽어오기
글. 오상문 sualchi@daum.net
케라스에서 만든 모델을 재사용하기 위해서 파일에 저장할 수 있다.
아래 코드처럼 저장할 파일을 지정하여 저장한다.
model.save('파일경로및이름.h5')
사용 중인 모델이 필요없으면 아래 코드를 이용하여 제거할 수 있다.
del model
파일에 저장한 모델을 가져오려면 다음처럼 읽어올 모델 파일을 지정한다.
model = keras.models.load_model('파일경로및이름.h5')
아래 예제는 생성한 모델을 파일에 저장하고, 모델을 제거했다가 파일에서 다시 읽어온다.
#--------------------------------------------------------------------
from tensorflow import keras
from tensorflow.keras import layers
# 모델 생성
inputs = keras.Input(shape=(784,), name='img')
x = layers.Dense(64, activation='relu')(inputs)
x = layers.Dense(64, activation='relu')(x)
outputs = layers.Dense(10, activation='softmax')(x)
model = keras.Model(inputs=inputs, outputs=outputs, name='mnist_model')
# MNIST 데이터는 숫자 손글씨 자료 데이터이다
(x_train,y_train), (x_test,y_test) = keras.datasets.mnist.load_data()
x_train = x_train.reshape(60000, 784).astype('float32') / 255
x_test = x_test.reshape(10000, 784).astype('float32') / 255
model.compile(loss='sparse_categorical_crossentropy',
optimizer=keras.optimizers.RMSprop(),
metrics=['accuracy'])
history = model.fit(x_train, y_train,
batch_size=64,
epochs=5,
validation_split=0.2)
test_scores = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', test_scores[0])
print('Test accuracy:', test_scores[1])
# 모델 저장
model.save(r"c:\temp\mymodel.h5") # 'c:/temp/mymodel.h5'
# 모델 제거
del model
# 모델 읽어오기
model = keras.models.load_model(r'c:\temp\mymodel.h5') # 'c:/temp/mymodel.h5'
# 모델 정보 출력
model.summary()
[실행 결과]
먼저, MNIST 데이터가 없으면 다운로드 작업을 한 후에 다음 과정이 진행된다.
Train on 48000 samples, validate on 12000 samples
Epoch 1/5
48000/48000 [==============================] - 8s 160us/sample - loss: 0.3546 - acc: 0.8990 - val_loss: 0.1982 - val_acc: 0.9428
Epoch 2/5
48000/48000 [==============================] - 7s 151us/sample - loss: 0.1638 - acc: 0.9513 - val_loss: 0.1417 - val_acc: 0.9588
Epoch 3/5
48000/48000 [==============================] - 7s 152us/sample - loss: 0.1203 - acc: 0.9635 - val_loss: 0.1200 - val_acc: 0.9649
Epoch 4/5
48000/48000 [==============================] - 8s 156us/sample - loss: 0.0952 - acc: 0.9722 - val_loss: 0.1176 - val_acc: 0.9658
Epoch 5/5
48000/48000 [==============================] - 8s 157us/sample - loss: 0.0802 - acc: 0.9751 - val_loss: 0.1086 - val_acc: 0.9679
Test loss: 0.10558185985079035
Test accuracy: 0.9699
---------------------------------------------------------
Model: "mnist_model"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
img (InputLayer) [(None, 784)] 0
_________________________________________________________________
dense_3 (Dense) (None, 64) 50240
_________________________________________________________________
dense_4 (Dense) (None, 64) 4160
_________________________________________________________________
dense_5 (Dense) (None, 10) 650
=================================================================
Total params: 55,050
Trainable params: 55,050
Non-trainable params: 0
_________________________________________________________________
<이상>
'AI 머신러닝' 카테고리의 다른 글
케라스, MNIST 예제에서 숫자 샘플 이미지 출력하기 (0) | 2020.01.15 |
---|---|
케라스, MNIST 손글씨 딥러닝 예제 분석 (0) | 2020.01.15 |
케라스, One-hot Encoding (원핫 인코딩) (0) | 2020.01.13 |
케라스(Keras)에서 지원하는 활성 함수 (0) | 2020.01.13 |
파이썬, 단순 선형 회귀 예제 (케라스) (0) | 2020.01.06 |