美文网首页
Keras模型加载时对象解析错误:raise ValueErro

Keras模型加载时对象解析错误:raise ValueErro

作者: 小菜鸡 | 来源:发表于2021-05-23 19:09 被阅读0次

    Problem:

    在使用 keras-bert 写模型的时候,模型加载出现:

        raise ValueError('Unknown ' + printable_module_name + ': ' + class_name)
    ValueError: Unknown layer: SeqSelfAttention
    

    原因在于构建模型的时候使用了非Keras官方的包里面的层对象,而load_model()本身内部只会加载Keras官方包,所以出现layer层对象找不到的问题。
    同样类似的还有度量函数(metric function)找不到:

        raise ValueError(
    ValueError: Unknown metric function: binary_precision/binary_recall/binary_f1_score
    

    原因在于使用了来自 keras_metrics 的第三方包的度量函数做模型评估.

    Solution:

    load_model()可以传递一个custom_objects字典,来告诉Keras该如何解析未知的配置对象:

    ...
        custom_objects = SeqSelfAttention.get_custom_objects()    #keras-bert
        custom_objects['binary_precision']=binary_precision()     #keras-metrics
        custom_objects['binary_recall']=binary_recall()           #keras-metrics
        custom_objects['binary_f1_score']=binary_f1_score()       #keras-metrics
        model = load_model('./model.h5',custom_objects=custom_objects)
        model.summary()
    ...
    

    其他的类似对象解析错误都可以尝试此种方式解决。

    相关文章

      网友评论

          本文标题:Keras模型加载时对象解析错误:raise ValueErro

          本文链接:https://www.haomeiwen.com/subject/wppzjltx.html