使用官方提供的Bert中文模型做分类之后,由于某些方面的需求,需要将训练的checkpoints模型转换成pb模型,但是由于对Bert模型不是很了解,一些方法没法使用,最后找到一些工具,成功转换。这里记录一下。如果有和我情况完全一致的人,可以使用和我一样的方法来转换。推荐使用2.3的方法。下面记录下我的出错流水账。
我的情况:
1.使用的是Bert模型的分类模型(见2.2第一个参考博文,里面说别的模型可能会出错)
2.没有仔细看代码,不清楚Bert模型的输入输出变量都是什么(知道的就能用2.1的通用方法了)。
如果只想知道怎么转换,直接看2.2。
PS:在发现2.3的方法的过程中,发现pb模型,也就是saved model模型是应该有两个文件的。
但是2.2的方法只生成了pb文件,另外一个文件缺失,没法用,建议用2.3的方法。
3. 学习使用TensorRT的时候,发现了一种更好的新方法,记录在2.3。如果是已经训练好的ckpt,可以直接修改代码重新生成。非常方便,建议用这个。
下面顺便记录一下Bert相关的一些情报,避免我以后忘记。
1.Bert模型
谷歌官方BERT:https://github.com/google-research/bert
bert中文模型的GitHub:https://github.com/ymcui/Chinese-BERT-wwm/tree/5f78b7dad237cbdc76557ffc5b895481afeaf278
关于Bert模型的使用,我的理解是,分为预训练和fine-tuning两步。可以下载预训练完成的预训练模型(也可以自己训练),然后在此基础上进行fine-tuning,变成分类模型或者别的模型,这里第一个链接就是官方提供的fine-Tuning代码。
在第一个链接下载代码,在第二个链接下载中文预训练模型文件。
这里我使用的是最大的那个预训练模型。
想要关于Bert更详细的理论和代码解释&