keras load_model 时name error :xxx is not defined

背景介绍

用keras写了一个model,训练之后保存model;然后在另一个程序中使用改model进行结果预测。

报错

load_model时报错:xxx is not defined

分析

简单来说,就是load_model时报错:xxx is not defined,这个xxx可能是你在定义model时用到的变量、函数、或者layer等。最后一行显示了,我在定义model时用到了自定了函数slice_for_merge,这属于第三方对象,出现了undefine错误。

解决方法

方案来自keras官网

custom_objects

意思是说:在load_model()时,如果要加载的模型包含自定义层或其他自定义类或函数,则可以通过 custom_objects 参数将它们传递给加载机制,有上述两种方案。所以在load_model的时候,加一个custom_objects参数就可以了。

比如说我的程序中,在load_model的这个python文件中,更改如下:

from kerasimport backendas K

from cnn_parse_tripletsimport slice_for_mergeas slice_for_merge

model = load_model(model_path, custom_objects={'backend': K, 'slice_for_merge': slice_for_merge})

类似的错误截图如下,解决方案同上。

load_model时报错:xxx is not defined
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。