TensorFlow2.7加载BERT模型报keras.engine无InputSpec属性错误求助
问题原因
你使用的keras_bert依赖旧版Keras的API路径:Keras 2.4及更早版本中InputSpec类归属keras.engine模块,而你安装的Keras 2.7.0属于高版本,该类已迁移至keras.layers模块,因此调用旧路径时触发AttributeError报错。
可选用解决方案
- 方案一:降级依赖版本至适配范围
将Keras和TensorFlow同步降级到兼容keras_bert的版本,执行以下安装命令即可:
pip install tensorflow==2.4.0 keras==2.4.3
- 方案二:修改报错文件的API调用路径
找到报错提示中的layer_normalization.py文件,将第70行的keras.engine.InputSpec直接替换为keras.layers.InputSpec,修改后无需调整其他业务代码即可正常运行。 - 方案三:改用兼容性更好的官方BERT工具
替换keras_bert为适配性更强的transformers库,该库对高版本TensorFlow/Keras适配完善,加载预训练BERT的示例代码如下:
from transformers import TFBertModel, BertTokenizer folder = "multi_cased_L-12_H-768_A-12" tokenizer = BertTokenizer.from_pretrained(folder) model = TFBertModel.from_pretrained(folder) model.summary()
内容的提问来源于stack exchange,提问作者Лион Соловев
相关产品推荐
相关产品推荐

