如何在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])
我在 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])