web-dev-qa-db-fra.com

Enregistrer et charger des poids en keras

J'essaie de sauvegarder et de charger des poids à partir du modèle que j'ai formé.

le code que j'utilise pour enregistrer le modèle est.

TensorBoard(log_dir='/output')
model.fit_generator(image_a_b_gen(batch_size), steps_per_Epoch=1, epochs=1)
model.save_weights('model.hdf5')
model.save_weights('myModel.h5')

Faites-moi savoir s'il s'agit d'une façon incorrecte de le faire ou s'il existe un meilleur moyen de le faire.

mais quand j'essaye de les charger, en utilisant ça,

from keras.models import load_model
model = load_model('myModel.h5')

mais j'obtiens cette erreur:


ValueError                                Traceback (most recent call 
last)
<ipython-input-7-27d58dc8bb48> in <module>()
      1 from keras.models import load_model
----> 2 model = load_model('myModel.h5')

/home/decentmakeover2/anaconda3/lib/python3.5/site-
packages/keras/models.py in load_model(filepath, custom_objects, compile)
    235         model_config = f.attrs.get('model_config')
    236         if model_config is None:
--> 237             raise ValueError('No model found in config file.')
    238         model_config = json.loads(model_config.decode('utf-8'))
    239         model = model_from_config(model_config, 
custom_objects=custom_objects)

ValueError: No model found in config file.

Des suggestions sur ce que je peux faire mal? Merci d'avance.

34
Ryan

Voici une vidéo sur YouTube qui explique exactement ce que vous voulez faire: enregistrer et charger un modèle Keras

Keras propose trois méthodes de sauvegarde différentes. Celles-ci sont décrites dans le lien vidéo ci-dessus (avec des exemples), ainsi que ci-dessous.

Premièrement, si vous recevez l'erreur, c'est parce que vous appelez incorrectement load_model.

Pour enregistrer et charger les poids du modèle, vous devez d’abord utiliser

model.save_weights('my_model_weights.h5')

pour enregistrer les poids, comme vous l'avez affiché. Pour charger les poids, vous devez d’abord construire votre modèle, puis appeler load_weights sur le modèle, comme dans

model.load_weights('my_model_weights.h5')

Une autre technique de sauvegarde est model.save(filepath). Cette fonction save enregistre:

  • L'architecture du modèle, permettant de recréer le modèle.
  • Les poids du modèle.
  • La configuration de la formation (perte, optimiseur).
  • L'état de l'optimiseur, permettant de reprendre l'entraînement exactement là où vous l'avez laissé.

Pour charger ce modèle enregistré, utilisez les éléments suivants:

from keras.models import load_model
new_model = load_model(filepath)'

Enfin, model.to_json(), enregistre uniquement l'architecture du modèle. Pour charger l'architecture, vous utiliseriez

from keras.models import model_from_json
model = model_from_json(json_string)
61
blackHoleDetector

Pour le chargement poids, vous devez d'abord avoir un modèle. Ce doit être:

existingModel.save_weights('weightsfile.h5')
existingModel.load_weights('weightsfile.h5')     

Si vous voulez sauvegarder et charger le modèle entier (souvent cela ne fonctionne pas et je ne sais pas pourquoi):

model.save_model('filename')
model = load_model('filename')
8
Daniel Möller