Bootstrap

Transformer前馈全连接层和规范化层(3)

1、·什么是前馈全连接层:
·在Transformer中前馈全连接层就是具有两层线性层的全连接网络.
·前馈全连接层的作用:
·考虑注意力机制可能对复杂过程的拟合程度不够,通过增加两层网络来增强模型的能力.
 

class PositionwiseFeedForward(nn.Module):
    def __init__(self,d_model, d_ff,dropout=0.1):
        """
        d_model:词嵌入维度也是第一个线性层的输入维度
         d_ff:第一个是线性层的输出维度也是第二个线性层的输入维度
        """
        super(PositionwiseFeedForward,self).__init__()
        
        #两层全连接层
        self.w1=nn.Linear(d_model,d_ff)
        self.w2=nn.Linear(d_ff,d_model)
        self.dropout = nn.Dropout(dropout)
    def forward(self, x):
        #输入参数为x代表来自上一层的输出
      #首先经过第一个线性层,然后使用Funtional中relu函数进行激活,
     #之后再使用dropout进行随机置0,最后通过第二个线性层w2,返回最终结果.

        return self.w2(self.dropout(F.relu(self.w1(x))))

将上一章的多头注意力的mha_result作为输入x 

d_model =512
d_ff = 64
dropout = 0.2
x=mha_res
;