[PYTHON] Comment activer Keras Regressor pour être enregistré avec Pickle ou Joblib

Aperçu

J'obtiens une erreur lorsque j'essaye de sauvegarder KerasRegressor avec pickle ou joblib, Comment le rendre sauvegardable.

Solution

Monkey patch Keras Regressor ci-dessous

def KerasRegressor__getstate__(self):
    result = { 'sk_params': self.sk_params }
    with tempfile.TemporaryDirectory() as dir:
        if hasattr(self, 'model'): #Il y a des cas où il n'existe pas en raison d'un clonage par l'estimateur parent, etc.
            self.model.save(dir + '/output.h5', include_optimizer=False)
            with open(dir + '/output.h5', 'rb') as f:
                result['model'] = f.read()
    return result
KerasRegressor.__getstate__ = KerasRegressor__getstate__

def KerasRegressor__setstate__(self, serialized):
    self.sk_params = serialized['sk_params']
    with tempfile.TemporaryDirectory() as dir:
        model_data = serialized.get('model')
        if model_data:
            with open(dir + '/input.h5', 'wb') as f:
                f.write(model_data)
            self.model = models.load_model(dir + '/input.h5')
KerasRegressor.__setstate__ = KerasRegressor__setstate__

Commentaire

__getstate__, __setstate__Peut être utilisé pour personnaliser la sérialisation et la désérialisation de pickle pour chaque classe.(Pour plus de détails)

Recommended Posts

Comment activer Keras Regressor pour être enregistré avec Pickle ou Joblib
Comment réduire l'utilisation de la mémoire GPU avec Keras
Comment déboguer avec Jupyter ou iPython Notebook
ne peut pas décaper. Comment gérer les objets Annoy
Comment traiter les images de caméra avec Teams et Zoom
[TensorFlow 2 / Keras] Comment exécuter l'apprentissage avec CTC Loss dans Keras
Comment activer la lecture / écriture de net.Conn avec Golang pour annuler avec le contexte
Pour les débutants, comment gérer les erreurs courantes dans les keras
Comment mettre à jour avec SQLAlchemy?
Comment lancer avec Theano
Comment modifier avec SQLAlchemy?
Comment séparer les chaînes avec ','
Comment faire RDP sur Fedora31
Comment supprimer avec SQLAlchemy?
Enregistrer et charger des données avec joblib, pickle
Python: comment utiliser async avec
Pour utiliser virtualenv avec PowerShell
Comment installer python-pip avec ubuntu20.04LTS
Comment gérer les données déséquilibrées
Comment démarrer avec Scrapy
Comment démarrer avec Python
Comment gérer l'erreur DistributionNotFound
Comment démarrer avec Django
Comment augmenter les données avec PyTorch
Comment calculer la date avec python
Comment installer mysql-connector avec pip3
Comment INNER JOIN avec SQL Alchemy
Comment installer Anaconda avec pyenv
[Python] Comment gérer l'erreur d'instance is "is instance () arg 2 doit être un type ou un tuple de types"