如何在pytorch中连接两个不同维度的张量

how to concate two tensors with different dimensions in pytorch

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

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

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

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

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

根据您希望对这两个张量执行的操作,您可以考虑在最后一个轴上进行串联,从而使生成的张量具有 (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])