在huggingface(transformers)加载Bert遇到的attention_mask问题
记录一个非常有意思的,看了源码才了解的Bert使用方法。
如何通过Bert实现类似left-to-right的语言模型呢?
一开始自己以为 只能如下使用。
自己以为关于attention_mask的输入只能是对每句话都产生一个二维的attention_mask.
但是自己需要实现left-to-right的模拟,使此时的字不能看到下一个字,只能依靠以前的字,这该怎么办呢?
https://github.com/920232796/bert_seq2seq/blob/master/bert_seq2seq/seq2seq_model.py
自己看到这个链接中构造了特殊的mask矩阵。
于是自己也随着这个代码构造了下三角矩阵输入,就以为可以解决掉的时候,报错。
关于这个报错,看来看去 extended_attention_mask这个参数很关键呢
恰好下载了一下transforemrs库的安装包
于是看了一下源码
可以看到attention_mask输入可以是二维 也可是三维。
所以按照需要构造三维的下三角矩阵就可以输入了!