小编ami*_*ola的帖子

如何为 Transformer 实现位置明智的前馈神经网络?

我很难理解 Transformer 架构中的位置明智前馈神经网络。

在此输入图像描述

让我们以机器翻译任务为例,其中输入是句子。从图中我了解到,对于每个单词,不同的前馈神经网络用于自注意力子层的输出。前馈层应用类似的线性变换,但每个变换的实际权重和偏差不同,因为它们是两个不同的前馈神经网络。

参考LinkPositionWiseFeedForward ,这是神经网络的类

class PositionwiseFeedForward(nn.Module):
    "Implements FFN equation."
    def __init__(self, d_model, d_ff, dropout=0.1):
        super(PositionwiseFeedForward, self).__init__()
        self.w_1 = nn.Linear(d_model, d_ff)
        self.w_2 = nn.Linear(d_ff, d_model)
        self.dropout = nn.Dropout(dropout)

    def forward(self, x):
        return self.w_2(self.dropout(F.relu(self.w_1(x))))
Run Code Online (Sandbox Code Playgroud)

我的问题是:

我不认为这有任何立场方面的问题。这是一个简单的两层全连接神经网络。假设 x是句子中每个单词的嵌入列表,句子中的每个单词都由上层使用相同的权重和偏差集进行转换。(如果我错了,请纠正我)

我期望找到类似将每个单词嵌入传递到单独Linear层的东西,该层将具有不同的权重和偏差,以实现与图中所示类似的效果。

machine-learning transformer-model neural-network pytorch

5
推荐指数
2
解决办法
3036
查看次数