第一个函数的参数输入和目标数据掩码张量

#使用DecoderLayer的类实现解码器层 classDecoderLayer(nn.Module):”Decoder由self-attn、src-attn、feed forward(定义如下)”def__init__(self, size, self_attn, src_attn, feed_forward , dropout ):#初始化函数的参数为​​5,即size,代表word embedding的维度大小,也代表decoder的大小。第二个是self_attn,多头self-attention对象,也就是说这个attention机制需要Q=K=V,第三个是src_attn,多头注意力对象,这里Q!=K=V,第四个是前馈全连接层对象,最后dropout设置为0比 super(DecoderLayer, self).__init__ ()self.size = sizeself.self_attn = self_attnself.src_attn = src_attnself。

图片[1]-第一个函数的参数输入和目标数据掩码张量-老王博客

“按照图1(右)进行连接。”m = memory#将x传入第一个子层结构,第一个子层结构的输入分别是x和self-attn函数没有关联解码输出,因为它是一个self-attention机制,因此,Q、K、V都是x,最后一个参数是目标数据掩码张量。这时候必须要对目标数据进行屏蔽,因为此时模型可能还没有生成任何目标数据。#例如,当解码器准备生成第一个字符或词汇表时,我们实际上已经传入了第一个字符来计算损失,但是我们不希望模型在生成第一个字符时使用这些信息,所以我们将对于它的掩蔽,当第二个字符或词汇也生成时,模型只能使用第一个字符或词汇信息,第二个字符及后续信息不允许模型使用。x = self.sublayer[0](x, lambda x: self.self_attn(x, x, x, tgt_mask))#然后进入第二个子层,这个子层中的常规注意力机制,q是输入x;k,v是编码层的输出内存,也传入source_mask,但是屏蔽源数据的原因不是为了抑制信息泄露,而是屏蔽对结果无意义的padding。x = self.sublayer[1](x, lambda x: self.src_attn(x, m, m, src_mask))#最后一个子层是前馈全连接子层,处理后可以返回结果。这是我们的解码器结构返回 self.sublayer[2](x, self.feed_forward)5 模型输出 sublayer[0](x, lambda x: self.self_attn(x, x, x, tgt_mask))#然后进入第二个子层,这个子层中的常规注意力机制,q是输入x;k,v是编码层的输出内存没有关联解码输出,也传入source_mask,但是屏蔽源数据的原因不是为了抑制信息泄露,而是屏蔽对结果无意义的padding。x = self.sublayer[1](x, lambda x: self.src_attn(x, m, m, src_mask))#最后一个子层是前馈全连接子层,处理后可以返回结果。这是我们的解码器结构返回 self.sublayer[2](x, self.feed_forward)5 模型输出 sublayer[0](x, lambda x: self.self_attn(x, x, x, tgt_mask))#然后进入第二个子层,这个子层中的常规注意力机制,q是输入x;k,v是编码层的输出内存,也传入source_mask,但是屏蔽源数据的原因不是为了抑制信息泄露,而是屏蔽对结果无意义的padding。x = self.sublayer[1](x, lambda x: self.src_attn(x, m, m, src_mask))#最后一个子层是前馈全连接子层,处理后可以返回结果。这是我们的解码器结构返回 self.sublayer[2](x, self.feed_forward)5 模型输出 v是编码层的输出内存,也是传入source_mask,但是屏蔽源数据的原因不是为了抑制信息泄露,而是屏蔽对结果无意义的padding。x = self.sublayer[1](x, lambda x: self.src_attn(x, m, m, src_mask))#最后一个子层是前馈全连接子层,处理后可以返回结果。这是我们的解码器结构返回 self.sublayer[2](x, self.feed_forward)5 模型输出 v是编码层的输出内存,也是传入source_mask,但是屏蔽源数据的原因不是为了抑制信息泄露,而是屏蔽对结果无意义的padding。x = self.sublayer[1](x, lambda x: self.src_attn(x, m, m, src_mask))#最后一个子层是前馈全连接子层,处理后可以返回结果。这是我们的解码器结构返回 self.sublayer[2](x, self.feed_forward)5 模型输出 它可以在处理后返回结果。这是我们的解码器结构返回 self.sublayer[2](x, self.feed_forward)5 模型输出 它可以在处理后返回结果。这是我们的解码器结构返回 self.sublayer[2](x, self.feed_forward)5 模型输出

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论