PyTorch高维张量通过线性层

PyTorch high-dimensional tensor through linear layer

我在 PyTorch 中有一个大小为 (32, 128, 50) 的张量。这些是批大小为 32 的 50 维词嵌入。也就是说,我的大小中的三个索引对应于批数、最大序列长度(使用 'pad' 标记)和每个嵌入的大小。现在,我想通过线性层传递它以获得大小为 (32, 128, 1) 的输出。也就是说,对于每个序列中嵌入的每个单词,我想让它成为一维的。我尝试在我的网络中添加一个线性层,从 50 维到 1 维,我的输出张量具有所需的形状。所以我认为这可行,但我想了解 PyTorch 如何处理这个问题,因为我没有明确告诉它要将线性层应用到哪个维度。我玩了一下,发现:

这表明 PyTorch 中的线性层将转换应用于张量的最后一个维度。是这样吗?

nn.Lineardocs中指定该模块的输入可以是大小为(*, H_in)的任意张量,输出将是大小为[=12的张量=],其中:

  1. *表示任意维数
  2. H_inin_features
  3. 的个数
  4. H_outout_features
  5. 的个数

为了更好地理解这一点,对于大小为 (n, m, 50)tensor 可以由具有 in_features=50Linear 模块处理,而 tensor大小 (n, 50, m) 可以由具有 in_features=mLinear 模块处理(在您的情况下 128)。