记录解决keras调用load_model时报错ValueError: Unknown Layer: Attention

事情是这样的

由于keras没有给出官方的Attention方法,所以不可避免地要自己编写Attention层。

在经历一番倒腾之后,Attention层终于能用于训练,但是评估模型的时候,调用load_model就出问题了

ValueError: Unknown Layer: Attention

从报错内容可知,是keras没认出我自定义的Attention层,于是按照网上的方法照葫芦画瓢,给load_model添加了一个参数

model = load_model("model.h5", custom_objects={'Attention':Attention})

增加了custom_objects之后,原来的错不报了,倒是报了新的错

__init__() missing 1 required positional argument: 'step_dim'

 然后,我在自定义层__init)__那里,给step_dim赋了个默认值,问题就解决了

记录解决keras调用load_model时报错ValueError: Unknown Layer: Attention_第1张图片

 最后附上evaluate的运行成功的截图,合影留念

记录解决keras调用load_model时报错ValueError: Unknown Layer: Attention_第2张图片


虽说问题得到了解决,但我还是没搞懂最后一步为什么要赋一个默认值,会不会是因为evaluate的时候需要确定数据维度呢?如果我找到答案了,我就来更新这篇博客吧~当然,也希望知道的大佬能不吝赐教~

你可能感兴趣的:(tensorflow,深度学习)