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