从bert4keras中加载bert模型(三个ckpt文件)后,添加了自定义层,在训练微调后保存模型,并能重新加载模型

起因是我为了微调github上的SimCSE模型,首先是从github上下载了预训练模型chinese_L-12_H-768_A-12,得到了5个文件

 

加载模型用到了其中三个ckpt文件

构建好bert模型,然后加上自定义的输出层 

# 最后的编码器
encoder = Model(bert.inputs, output)

进行训练微调,微调过后就需要保存模型么,但我花了不少时间上网搜如何做,一开始是想保存成三个ckpt的形式,但发现用到的是tf.train.saver,里面有个session的会话函数我真的不太搞懂,网上给的代码很多都是直接给出sess(只有看到有个代码是告诉我sess=tf.session),不过最后还是做到了保存出三个ckpt文件,但是把开头读模型的路径改到新的地址后,报错,然后也不知道怎么解决。。。于是我换了思路,保存其他格式,找啊找,试啊试,发现它可以load_model保存成h5格式,但后面重新读取的时候告诉我h5保存的模型中有网络层未定义(因为我们自定义了输出层),然后我也不知道怎么解决这个问题,接着想到退而求其次,只保存它的权重,然后重新构建模型的时候加载就好了,诶!成功了!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源介绍】 基于Bert训练模型微调命名实体识别项目python源码+使用说明+模型(支持docker部署).zip 基于Bert(或Robert)预训练模型微调命名实体识别任务,并提供基于docker的Tensor Serving部署模型方案实现过程。 # 1. 数据 人名日报标注语料,具体格式见data目录txt文件。 # 2. 类别 训练数据使用 BIO 标注方式,总共分为3种实体(person_name-人名、org_name-机构名、location-地名、other-其他) 对应的标签: person_name: B-PER I-PER org_name: B-ORG I-ORG location: B-LOC I-LOC other: O 以及 [CLS] [SEP] X 标签 可在 information.yaml 配置文件查看。 训练 # 1. 环境 * python 3.6+ * tensorflow 1.9.0+ # 2. 项目结构 ``` bert_ner |________bert # 官方bert代码 |________chinese_L-12_H-768_A-12或roberta_zh_l12: |________checkpoint # 模型固化 |________data # 数据集 |________model # 模型固化PB格式,用于tensor serving部署 |________run_ner.py # 模型运行程序 |________information.yaml # 配置文件 |________infer.py # 预测程序 |________utils_.py # 预测阶段文本处理程序 ``` 运行 不建议使用命令行解析方式修改超参数,在调参过程需要频繁修改超参数,在文件修改既方便,也不会出错。 ``` python3 run_ner.py ``` 【备注】 该项目是个人毕设/课设/大作业项目,代码都经过本地调试测试,功能ok才上传,高分作品,可快速上手运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 欢迎下载使用,也欢迎交流学习!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值