背景介绍
用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
网友评论