J'utilise le code suivant pour former le réseau HAN. Lien de code

J'ai formé le modèle avec succès mais lorsque j'ai essayé de charger le modèle en utilisant keras load_model, cela me donne l'erreur suivante - Couche inconnue: AttentionWithContext

0
Hare krishna 18 mars 2019 à 12:31

2 réponses

Meilleure réponse

Ajoutez la fonction suivante dans le fichier AttentionWithContext.py:

def create_custom_objects():
    instance_holder = {"instance": None}

    class ClassWrapper(AttentionWithContext):
        def __init__(self, *args, **kwargs):
            instance_holder["instance"] = self
            super(ClassWrapper, self).__init__(*args, **kwargs)

    def loss(*args):
        method = getattr(instance_holder["instance"], "loss_function")
        return method(*args)

    def accuracy(*args):
        method = getattr(instance_holder["instance"], "accuracy")
        return method(*args)
    return {"ClassWrapper": ClassWrapper ,"AttentionWithContext": ClassWrapper, "loss": loss,
            "accuracy":accuracy}

Lors du chargement du modèle:

from AttentionWithContext import create_custom_objects

model = keras.models.load_model(model_path, custom_objects=create_custom_objects())

model.evaluate(X_test, y_test) # or model.predict
1
Ali Abul Hawa 9 avril 2019 à 12:28

Selon le lien que vous avez partagé, votre modèle a une couche AttentionWithContext() explicitement définie ajoutée au modèle. Lorsque vous essayez de charger le modèle à l'aide du load_model de keras, la méthode affiche une erreur car cette couche n'est pas intégrée à keras et pour résoudre ce problème, vous devrez peut-être redéfinir cette couche dans votre code avant de charger le modèle à l'aide de load_model. Veuillez essayer d'écrire la classe AttentionWithContext(layer) telle qu'elle est dans votre lien fourni (https://www.kaggle.com/hsankesara/news-classification-using-han/notebook) avant d'essayer de charger le modèle.

0
Abhiram Satputé 18 mars 2019 à 10:00