如何在pytorch中连接两个不同尺寸的张量

Posted

技术标签:

【中文标题】如何在pytorch中连接两个不同尺寸的张量【英文标题】:how to concate two tensors with different dimensions in pytorch 【发布时间】:2022-01-12 11:26:22 【问题描述】:

我在 pytorch 中有两个具有这些形状的张量:

torch.Size([64, 100]) 和 torch.Size([64, 100, 256])

我想通过torch.cat 连接它们,但它们的形状和大小应该相同。所以我得到这个错误:

RuntimeError: Tensors must have the same number of dimensions: got 2 and 3

我应该怎么做才能解决这个问题?如何将 2d PyTorch 张量转换为 3d 张量或者如何将 3d PyTorch 张量转换为 2d 张量而不丢失任何数据?或任何其他想法?

【问题讨论】:

【参考方案1】:

根据您要对这两个张量做什么,您可以考虑在最后一个轴上进行连接,以便生成的张量形状为(64, 100, 257)。这需要您首先在第一个张量上解压单个维度:

>>> x, y = torch.rand(64, 100), torch.rand(64, 100, 256)
>>> z = torch.cat((x[..., None], y), -1)

>>> z.shape
torch.Size([64, 100, 257])

【讨论】:

以上是关于如何在pytorch中连接两个不同尺寸的张量的主要内容,如果未能解决你的问题,请参考以下文章

如何连接具有 2 个不同维度的 2d 张量

在 PyTorch 中将 5D 张量转换为 4D 张量

如何对两个 PyTorch 量化张量进行矩阵相乘?

如何检查不同张量pytorch中的张量值是不是?

如何使用 TensorFlow 连接两个具有不同形状的张量?

使用 grad 将 PyTorch 张量调整为更小的尺寸