【问题标题】:Not able to load keras trained model无法加载 keras 训练的模型
【发布时间】:2019-03-18 09:31:50
【问题描述】:

我正在使用以下代码来训练 HAN 网络。 Code Link

我已经成功地训练了模型,但是当我尝试使用 keras load_model 加载模型时,它给了我以下错误- 未知层:AttentionWithContext

【问题讨论】:

    标签: python keras deep-learning text-classification


    【解决方案1】:

    在 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}
    

    加载模型时:

    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
    

    【讨论】:

      【解决方案2】:

      根据您共享的链接,您的模型有一个明确定义的层 AttentionWithContext() 添加到模型中。当您尝试使用 keras 的 load_model 加载模型时,该方法会显示错误,因为该层不是 keras 内置的,要解决此问题,您可能必须在使用 load_model 加载模型之前在代码中再次定义该层。在尝试加载模型之前,请尝试在您提供的链接 (https://www.kaggle.com/hsankesara/news-classification-using-han/notebook) 中编写 AttentionWithContext(layer) 类。

      【讨论】:

        猜你喜欢
        • 2018-08-28
        • 1970-01-01
        • 2017-07-28
        • 1970-01-01
        • 1970-01-01
        • 2019-01-20
        • 2021-03-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多