matmul 到 pytorch 张量中的每一行

matmul to every row in pytorch tensor

我目前有一个看起来像这样的张量(随机选择的数字),我将其称为 x:

tensor([[ 1., -5.],
        [ 2., -4.],
        [ 3.,  2.],
        [ 4.,  1.],
        [ 5.,  2.]])

我还有另一个二维张量(称之为 i)

tensor([[-1.,  1.],
        [ 1., -1.]], requires_grad=True)

我希望pytorch.matmul i到x中的每一行。我有办法实现这个目标吗?

以下是我的尝试:

apply_i = lambda x: torch.matmul(x, i)
final = pytorch.tensor([apply_i(a) for a in x])

它抛出一条错误消息 “只有一个元素张量可以转换为 Python 标量”。即使删除方括号也不起作用。

如有任何帮助,我们将不胜感激!

import torch
x = torch.tensor([[ 1., -5.],
        [ 2., -4.],
        [ 3.,  2.],
        [ 4.,  1.],
        [ 5.,  2.]])

更改您的代码:

i = torch.tensor([[-1.,  1.],
        [ 1., -1.]], requires_grad=True)
apply_i = lambda x: torch.matmul(x, i)
# final = torch.tensor([apply_i(a) for a in x])
final = [apply_i(a) for a in x]
final = torch. stack(final)

因为xi是二维张量,x的形状是[5,2],i是[2, 2]。 所以可以直接申请torch.matmul

torch.matmul(x, i)

tensor([[-6.,  6.],
        [-6.,  6.],
        [-1.,  1.],
        [-3.,  3.],
        [-3.,  3.]], grad_fn=<MmBackward>)