Comment faire pour enregistrer le modèle final à l'aide de keras?
- Je utiliser KerasClassifier pour former le classificateur.
Le code est ci-dessous:
import numpy
from pandas import read_csv
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasClassifier
from keras.utils import np_utils
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
from sklearn.preprocessing import LabelEncoder
from sklearn.pipeline import Pipeline
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load dataset
dataframe = read_csv("iris.csv", header=None)
dataset = dataframe.values
X = dataset[:,0:4].astype(float)
Y = dataset[:,4]
# encode class values as integers
encoder = LabelEncoder()
encoder.fit(Y)
encoded_Y = encoder.transform(Y)
#print("encoded_Y")
#print(encoded_Y)
# convert integers to dummy variables (i.e. one hot encoded)
dummy_y = np_utils.to_categorical(encoded_Y)
#print("dummy_y")
#print(dummy_y)
# define baseline model
def baseline_model():
# create model
model = Sequential()
model.add(Dense(4, input_dim=4, init='normal', activation='relu'))
#model.add(Dense(4, init='normal', activation='relu'))
model.add(Dense(3, init='normal', activation='softmax'))
# Compile model
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
estimator = KerasClassifier(build_fn=baseline_model, nb_epoch=200, batch_size=5, verbose=0)
#global_model = baseline_model()
kfold = KFold(n_splits=10, shuffle=True, random_state=seed)
results = cross_val_score(estimator, X, dummy_y, cv=kfold)
print("Accuracy: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100))
Mais Comment faire pour enregistrer le modèle final pour l'avenir de prédiction?
J'ai l'habitude d'utiliser de code ci-dessous pour enregistrer modèle:
# serialize model to JSON
model_json = model.to_json()
with open("model.json", "w") as json_file:
json_file.write(model_json)
# serialize weights to HDF5
model.save_weights("model.h5")
print("Saved model to disk")
Mais je ne sais pas comment insérer l'enregistrement code du modèle en KerasClassifier du code.
Merci.
OriginalL'auteur yensheng | 2017-03-13
Vous devez vous connecter pour publier un commentaire.
Le modèle dispose d'un
save
méthode, qui enregistre tous les détails nécessaires pour reconstituer le modèle. Un exemple de la keras documentation:Avez-vous essayé le réglage de la
callbacks
mot-clé de votreKerasClassifier
égale à une liste dont l'unique objet est une instance d'une keras ModelCheckpoint?Non, je ne sais pas ModelCheckpoint. Pourriez-vous expliquer plus en détail à ce sujet.Merci
Suivez le lien dans mon commentaire pour plus de détails. Le
ModelCheckpoint
rappel est utilisé pour enregistrer le modèle après chaque formation époque (en option uniquement si l'erreur de validation diminue). Il peut enregistrer plusieurs fichiers ou un seul (écrasé) fichier.Exécuté au-dessus de la ligne de codes, mais au moment de load_model() son montrant cette erreur:
ValueError: Cannot create group in read only mode.
OriginalL'auteur bogatron
vous pouvez enregistrer le modèle dans json et de poids dans un hdf5 format de fichier.
fichiers "model_num.h5" et "model_num.json" sont créés qui contiennent de notre modèle et de poids
À utiliser les mêmes formés de modèle pour d'autres tests, vous pouvez simplement charger le hdf5 fichier et l'utiliser pour la prédiction de données différentes.
voici comment charger le modèle à partir des fichiers sauvegardés.
À prévoir pour les différentes données que vous pouvez utiliser cette
ValueError: Unknown initializer: GlorotUniform
. Pouvez-vous s'il vous plaît suggérer comment résoudre ce problème?check this out [stackoverflow.com/questions/53183865/...
Merci pour la réponse MMK. Mais j'ai trouvé la solution je l'ai expliqué ci-dessous dans la réponse.
OriginalL'auteur MMK
Vous pouvez utiliser
model.save(filepath)
pour enregistrer un Keras modèle en une seule HDF5 fichier qui contiendra:Dans votre code Python probable la dernière ligne devrait être:
Cela vous permet d'enregistrer l'intégralité de l'état d'un modèle dans un fichier unique.
Des modèles enregistrés peuvent être réintroduit par
keras.models.load_model()
.Le modèle renvoyé par
load_model()
est la compilation d'un modèle prêt à être utilisé (sauf le modèle enregistré n'a jamais été compilé en premier lieu).model.save()
arguments:OriginalL'auteur prosti
vous pouvez enregistrer le modèle et la charge de cette façon.
OriginalL'auteur TRINADH NAGUBADI