out=self.attention(queries,keys,values,attention_mask)out=self.dropout(out) 值得注意的是,在此处调用self.attention时传入的queries、keys、value形状分别为(以step=3为例):(bs,1,dim)、(bs,3,dim)、(bs,3,dim),即在key和value处神奇的对已有的全部单词做了考虑,而在上一步中分明将同一个形状为(bs,...
训练是用y_1,y_2,...y_t与真实的翻译结果ground truth去分别算cross entropy loss,然后把t个loss加起来,得到loss的(那显然是需要用masked self attention的,否则y_1是包含右侧的信息的,那你还把他加到loss里面,它都作弊了,显然这个位置算出来的loss是会比较低,但有什么意义呢,真正推理的时候你哪来未来的信...
图1是没有mask的self-attention layer, 图2是有mask的 mask在图2中是一个a,b,c,d组成的2x2矩阵,之所以是2x2是因为假设了输入和输出序列长度就是2。这里A=K1 * Q1, B=K1*Q2,也就是说B其实就是第二个序列对于第一个序列的attention,然而在decode的时候,想要遵循“no peeking ahead”的原则,B就必须为0...
out=self.attention(queries,keys,values,attention_mask)out=self.dropout(out) 值得注意的是,在此处调用self.attention时传入的queries、keys、value形状分别为(以step=3为例):(bs,1,dim)、(bs,3,dim)、(bs,3,dim),即在key和value处神奇的对已有的全部单词做了考虑,而在上一步中分明将同一个形状为(bs,...