导入BidirectionalAttentionFlow时无法导入Adadelta报错如何解决
问题根因
你使用的keras-bidaf是适配Keras 2.3及更早版本的旧项目,当前本地环境的Keras版本(多为TensorFlow 2.x内置版本)调整了优化器的导入路径,Adadelta不再默认暴露在keras.optimizers下,因此触发导入报错。
可行解决方案(按实施复杂度从低到高排序)
方案1:临时补丁注入(无需修改依赖库源码、无需降级环境)
在你 notebook 所有代码的最开头,先执行以下代码手动补全导入路径:
import keras # 若下行报错,可替换为 from tensorflow.keras.optimizers import Adadelta from keras.optimizers.legacy import Adadelta keras.optimizers.Adadelta = Adadelta # 之后再执行原有导入逻辑 from bidaf.models import BidirectionalAttentionFlow bidaf_model = BidirectionalAttentionFlow(400) keras_model = bidaf_model.model
方案2:修改依赖库源码(一次修改永久生效)
找到报错路径下的~\AppData\Roaming\Python\Python38\site-packages\bidaf\models\bidaf.py文件,打开后将其中的导入语句:from keras.optimizers import Adadelta
修改为:from keras.optimizers.legacy import Adadelta
保存后重新运行代码即可。
方案3:降级依赖版本(完全匹配项目适配的环境)
新建Python虚拟环境,安装适配keras-bidaf的旧版本依赖:
pip install keras==2.2.4 tensorflow==1.15.5
该方案无需修改任何代码,直接运行原有逻辑即可正常执行。
内容的提问来源于stack exchange,提问作者user16925784
相关产品推荐
相关产品推荐

