transformers的TFBertForMaskedLM。
TFBertForMaskedLM
这个类一样属于一个基类,主要是做Mask预测的,也就是说你可以对句子随机进行遮蔽(Mask),当然,这也是Bert预训练的任务之一(另一个是NSP,不过越来越多的实验表明,NSP并不是一个好的预训练任务——至少现在不是,可能是由于NSP的loss计算或者什么原因)。
直接分析源码吧
源码
记得之前提过的TFBertForPreTraining吗?对比一下两段源码:
TFBertForMaskedLM:
init:
![](/wp-content/uploads/2020/11/图片-23.png)
call:
![](/wp-content/uploads/2020/11/图片-24.png)
TFBertForPreTraining:
init:
![](http://www.sniper97.cn/wp-content/uploads/2020/11/%E5%9B%BE%E7%89%87-10.png)
call:
![](http://www.sniper97.cn/wp-content/uploads/2020/11/%E5%9B%BE%E7%89%87-13.png)
可以看出来, TFBertForMaskedLM 就是 TFBertForPreTraining 的青春版,并且可以预料的到,还有另一个青春版是专门做NSP任务的。
演示
做一个简单演示,可以观察到模型可以正确的预测Mask掉位置正确的输出。
![](/wp-content/uploads/2020/11/图片-22.png)
0 条评论