当前位置:   article > 正文

用keras调用load_model时报错ValueError: Unknown Layer:LayerName_load_metrics(rouge

load_metrics(rouge

出现该错误是因为要保存的model中包含了自定义的层(Custom Layer),导致加载模型的时候无法解析该Layer
解决该问题的方法是在load_model函数中添加custom_objects参数,该参数接受一个字典,键值为自定义的层:

ner_model = load_model(model_path + 'ner_crf_bilstm_model.h5', custom_objects={"CRF": CRF,"crf_loss": crf_loss, "crf_accuracy": crf_accuracy})
  • 1

或者你可以使用对象的方法

from keras.utils import CustomObjectScope
with CustomObjectScope({'AttentionLayer': AttentionLayer}):
    model = load_model('my_model.h5')
  • 1
  • 2
  • 3

Custom objects handling works the same way for load_model, model_from_json, model_from_yaml:

from keras.models import model_from_json
model = model_from_json(json_string, custom_objects={'AttentionLayer': AttentionLayer})
  • 1
  • 2

如果有两个以上的自定义网络层的解决方法如下:

custom_ob = {'AttLayer1': custom_layer.Attention,'AttLayer2': custom_layer.Attention}
model = load_model('lstm.h5', custom_objects=custom_ob)
或者
with CustomObjectScope(custom_ob):
model = load_model('lstm.h5')
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/499813
推荐阅读
相关标签
  

闽ICP备14008679号