Bert我们一般使用方法是,加载预训练模型,在我们自己的任务上进行微调。但是我们有些时候会遇到这种情况,比如说,之前文章提到的,
我不想要你预训练模型中最后三层参数,而是使用我自己的方法重新初始化。
首先解释一下为什么需要这么做?有的论文发现,bert越靠后面(越靠近顶层,也就是输出层),学到的知识越是笔记抽象高级的知识,越靠近预训练模型的任务情况,和我们自己的任务就不太相符,所以想要重新初始化,基于我们自己的任务从零学习。
好了,代码是怎么实现?
一般pytorch的初始化方法我就不说了,这个比较简单,之后可能有时间写一下,这里专门介绍一下bert里面如何去做。
首先,我们看一下源代码,加载模型的时候是怎么加载的:
model = model_class.from_pretrained(args.model_name_or_path, from_tf=bool('.ckpt'