You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

加载训练好的BERT模型时遇TFBertModel未知层错误求助

问题解决:加载BERT模型时出现Unknown layer: TFBertModel错误

问题原因

你的模型中使用了transformers库提供的TFBertModel自定义层,用Keras的model.save()保存后,加载时Keras无法自动识别该外部层,必须通过custom_objects参数显式传入该层的定义。你当前的加载代码错误地传入了自定义模型函数,而非实际需要的TFBertModel。

解决方案

  1. 修正模型加载代码
    确保加载前已导入TFBertModel和Adam(模型编译时用到了该优化器),然后修改load_model的custom_objects参数:
# 确保导入必要模块
from transformers import TFBertModel
from tensorflow.keras.optimizers import Adam

# 修正后的加载代码
loaded_model = tf.keras.models.load_model(
    'bert_model.h5', 
    custom_objects={"TFBertModel": TFBertModel, "Adam": Adam}
)
  1. 可选:更稳定的保存/加载方式
    如果后续仍遇到自定义层兼容性问题,推荐使用SavedModel格式保存整个模型,这种格式对复杂层结构的支持更好:
# 保存为SavedModel格式(替代h5)
model.save('bert_model_savedmodel')

# 加载SavedModel格式模型
loaded_model = tf.keras.models.load_model(
    'bert_model_savedmodel',
    custom_objects={"TFBertModel": TFBertModel, "Adam": Adam}
)

验证

加载完成后,可通过loaded_model.summary()确认模型结构是否正常,再进行预测测试。

内容的提问来源于stack exchange,提问作者waji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:48:29