RuntimeError: Expected 3-dimensional tensor, but got 2-dimensional tensor for argument

RuntimeError: Expected 3-dimensional tensor, but got 2-dimensional tensor for argument

我有两个张量名称:'wy' 和 'x',它们的大小都是 8:

wy= tensor([[ 74.2090, -92.9444,  45.2677, -38.4132, -39.8641,  -6.9193,  67.4830,
     -80.1534]], grad_fn=<AddmmBackward>)

x= tensor([[ 70.,  77., 101.,  75.,  40.,  83.,  48.,  73.]])

现在,我想做 bmm 乘以 x * wy 如下:

 xWy = x.bmm(Wy.unsqueeze(2)).squeeze(3)

我收到一个错误:

  RuntimeError: Expected 3-dimensional tensor, but got 2-dimensional tensor for argument #1 'batch1' (while checking arguments for bmm)

8*8应该可以。但是不知道为什么每次都报错

任何帮助,请!

bmm代表批次matrix-matrix产品。所以它期望 both 张量具有批量维度(即错误所说的 3D)。

对于单张量,您想使用 mm instead. Note that Tensor.mm() 也存在相同的行为。

x.mm(wy.transpose(0, 1))
tensor([[-5051.9199]])

或者更好的是,对于两个一维张量,您可以使用 dot 作为点积。

# Or simply do not initialise them with an additional dimension. Not needed.
x.squeeze().dot(wy.squeeze())
tensor(-5051.9199)