从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保存的模型中有网络层未定义(因为我们自定义了输出层),然后我也不知道怎么解决这个问题,接着想到退而求其次,只保存它的权重,然后重新构建模型的时候加载就好了,诶!成功了!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值