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