是 Transformer 模型中的一个重要组件。位置前馈神经网络在每个位置上独立地对输入进行处理,通常由两个全连接层(线性层)和中间的一个非线性激活函数(如 ReLU)组成。
代码如下:
class PositionWiseFFN(nn.Module):
def __init__(self, ffn_num_input, ffn_num_hiddens, ffn_num_outputs, **kwargs):
super().__init__(**kwargs)
self.dense1 = nn.Linear(ffn_num_input, ffn_num_hiddens)
self.relu = nn.Relu()
self.dense2 = nn.Linear(ffn_num_hiddens, ffn_num_outputs)
def forward(self, X):
return self.dense2(self.relu(self.dense1(X)))
位置前馈神经网络的作用
位置前馈神经网络在 Transformer 模型中的作用如下:
-
非线性变换:
通过两个全连接层和中间的 ReLU 激活函数,引入非线性变换,增强模型的表达能力。 -
独立处理:
每个位置上的输入数据独立地通过位置前馈神经网络进行处理,从而捕捉每个位置的局部特征。 -
特征映射:
将输入特征映射到隐藏层特征,再映射到输出特征,实现特征的变换和提取。