Keras加载含有自定义Layer的模型

Keras在加载含有自定义Layer的模型时会报错,unknown layer xxx

解决办法:

详见:FAQ 常见问题解答 - Keras 中文文档

处理已保存模型中的自定义层(或其他自定义对象)

方法一、如果要加载的模型包含自定义层或其他自定义类或函数,则可以通过 custom_objects 参数将它们传递给加载机制:

fromkeras.modelsimportload_model# 假设你的模型包含一个 AttentionLayer 类的实例model = load_model('my_model.h5', custom_objects={'AttentionLayer': AttentionLayer})

使用这种方法时需要在加载模型的文件中给出自定义Layer的定义,import的方式不行。

方法二、或者,你可以使用 自定义对象作用域:

fromkeras.utilsimportCustomObjectScopewithCustomObjectScope({'AttentionLayer': AttentionLayer}):    model = load_model('my_model.h5')

自定义对象的处理与 load_model, model_from_json, model_from_yaml 的工作方式相同:

fromkeras.modelsimportmodel_from_jsonmodel = model_from_json(json_string, custom_objects={'AttentionLayer': AttentionLayer})

方法二未尝试

你可能感兴趣的:(Keras加载含有自定义Layer的模型)