Keras поддерживает более простой интерфейс для сохранения весов модели и архитектуры модели вместе в одном файле H5.
Сохранение модели с помощью метода save.model включает в себя все, что нам нужно знать о модели, включая:
- Веса модели.
- Архитектура модели.
- Детали компиляции модели (потери и метрики).
- Состояние оптимизатора модели.
Сохраненную модель затем можно загрузить, вызвав функцию load_model () и передав имя файла. Функция возвращает модель с той же архитектурой и весами.
Пример: Я запустил простую модель и сохранил с помощью model.save и загрузил с load_model keras. Вы можете загрузить набор данных из здесь .
Построить и сохранить модель:
# MLP for Pima Indians Dataset saved to single file
import numpy as np
from numpy import loadtxt
from keras.models import Sequential
from keras.layers import Dense
# load pima indians dataset
dataset = np.loadtxt("/content/pima-indians-diabetes.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]
# define model
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Model Summary
model.summary()
# Fit the model
model.fit(X, Y, epochs=150, batch_size=10, verbose=0)
# evaluate the model
scores = model.evaluate(X, Y, verbose=0)
print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
# save model and architecture to single file
model.save("model.h5")
print("Saved model to disk")
Вывод -
Model: "sequential_3"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_7 (Dense) (None, 12) 108
_________________________________________________________________
dense_8 (Dense) (None, 8) 104
_________________________________________________________________
dense_9 (Dense) (None, 1) 9
=================================================================
Total params: 221
Trainable params: 221
Non-trainable params: 0
_________________________________________________________________
acc: 77.08%
Saved model to disk
Загрузить модель и оценить для проверки:
# load and evaluate a saved model
from numpy import loadtxt
from keras.models import load_model
# load model
model = load_model('model.h5')
# summarize model.
model.summary()
# load dataset
dataset = loadtxt("pima-indians-diabetes.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]
# evaluate the model
score = model.evaluate(X, Y, verbose=0)
print("%s: %.2f%%" % (model.metrics_names[1], score[1]*100))
Выход -
Model: "sequential_3"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_7 (Dense) (None, 12) 108
_________________________________________________________________
dense_8 (Dense) (None, 8) 104
_________________________________________________________________
dense_9 (Dense) (None, 1) 9
=================================================================
Total params: 221
Trainable params: 221
Non-trainable params: 0
_________________________________________________________________
acc: 77.08%