这个应是最简单了解bert源代码的文章,看英语头晕的人和怕麻烦的人,适合看我这个,我不会拓展太多,每一个功能大致都会介绍。
文件定位在 pytorch-transformers/pytorch_transformers/modeling_bert.py
当然啦,依然需要一些预备知识attention、seq2seq、mask、embedding等才能快速看懂,比如我文中说的self-attention,语义向量,要知道是在说什么,不会解释,我就按照代码结构给大家解释整个意思,按顺序读就行。
包含的结构class类:BertModelforward 函数接收 参数 :inputs,segment,mask'(符号'是可以为None的意思),position_ids',head_mask'
输出 :元组 (最后一层的隐变量,最后一层第一个token的隐变量,最后一层的隐变量或每一层attentions 权重参数)
方法过程:embedding(关联类BertEmbeddings)->encoder(关联类BertEncoder)->pooler(关联类BertPooler)
BertEmbeddingsforword 函数接收 参数 :inputs,segment',position_ids'
输出 :words+position+segment的embedding
方法过程 :调用nn.Embedding构造words、position、segment的embedding -> 三个embedding相加 -> 规