pytorch中嵌入的加权求和

ele*_*bby 4 pytorch

我有一个由 12 个单词组成的序列,我使用 12x256 矩阵(使用单词嵌入)表示它们。让我们将这些称为。我希望以此作为输入并输出一个 1x256 向量。但是我不想使用 (12x256) x 256 密集层。相反,我想使用 12 个嵌入的加权求和来创建输出嵌入

其中 wi 是标量(因此存在权重共享)。

如何在 pytorch 中创建可训练的 wi s?我是新手,只熟悉像 nn.Linear 这样的标准模块。

小智 7

您可以通过 kernel_size = 1 的一维卷积来实现

import torch

batch_size=2

inputs = torch.randn(batch_size, 12, 256)
aggregation_layer = torch.nn.Conv1d(in_channels=12, out_channels=1, kernel_size=1)
weighted_sum = aggregation_layer(inputs)
Run Code Online (Sandbox Code Playgroud)

这样的卷积将有 12 个参数。每个参数将等于您提供的公式中的 e_i。

换句话说,这个卷积将在大小为 256 的维度上运行,并将其与可学习的权重相加。