事情是这样的
由于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赋了个默认值,问题就解决了
最后附上evaluate的运行成功的截图,合影留念
虽说问题得到了解决,但我还是没搞懂最后一步为什么要赋一个默认值,会不会是因为evaluate的时候需要确定数据维度呢?如果我找到答案了,我就来更新这篇博客吧~当然,也希望知道的大佬能不吝赐教~