web-dev-qa-db-fra.com

Différence entre Keras model.save () et model.save_weights ()?

Pour enregistrer un modèle dans Keras, quelles sont les différences entre les fichiers de sortie de:

  1. model.save()
  2. model.save_weights()
  3. ModelCheckpoint() dans le rappel

Le fichier enregistré à partir de model.save() est plus grand que le modèle à partir de model.save_weights(), mais significativement plus grand qu'un fichier d'architecture de modèle JSON ou Yaml. Pourquoi est-ce?

Pour reformuler ceci: pourquoi la taille (model.save ()) + size (quelque chose) = size (model.save_weights ()) + size (model.to_json ()), qu'est-ce que ce "quelque chose"?

Serait-il plus efficace de simplement model.save_weights() et model.to_json(), et de charger à partir de ceux-ci que de simplement faire model.save() et load_model()?

Quelles sont les différences?

20
mikal94305

save() enregistre les poids et la structure du modèle dans un seul fichier HDF5. Je pense que cela inclut également des choses comme l'état de l'optimiseur. Ensuite, vous pouvez utiliser ce fichier HDF5 avec load() pour reconstruire l'ensemble du modèle, y compris les poids.

save_weights() enregistre uniquement les poids sur HDF5 et rien d'autre. Vous avez besoin de code supplémentaire pour reconstruire le modèle à partir d'un fichier JSON.

12