首页 > 解决方案 > 在 Pytorch 中连接两个张量

问题描述

RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 2. Got 32 and 71 in dimension 0 at /pytorch/aten/src/THC/generic/THCTensorMath.cu:87

我有一个张量的形状[71 32 1]

[100 32 1]我想通过填充零向量来使其成形。

我尝试连接形状为 [29 32 1] 的零填充向量。我得到上面的错误。

我尝试使用 shape 零的填充向量[29 32 1],但仍然出现错误。

我怎样才能创建所需的张量?

标签: pythonmachine-learningdeep-learningpytorchtensor

解决方案


为了更好地帮助您,您需要发布导致错误的代码,没有它我们只是在这里猜测......

从您收到的错误消息中猜测:

1.

Sizes of tensors must match except in dimension 2

pytorch 尝试沿第二维连接,而您尝试沿第一维连接。

2.

Got 32 and 71 in dimension 0

您想要连接的张量的尺寸似乎与您预期的不一样,您有一个 size(72, ...)而另一个是(32, ...).
您还需要检查这一点。

工作代码

这是一个 concat 的例子

import torch

x = torch.rand((71, 32, 1))
# x.shape = torch.Size([71, 32, 1])
px = torch.cat((torch.zeros(29, 32, 1, dtype=x.dtype, device=x.device), x), dim=0)
# px.shape = torch.Size([100, 32, 1])

或者,您可以使用functional.pad

from torch.nn import functional as F

px = F.pad(x, (0, 0, 0, 0, 29, 0))

推荐阅读