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)
因为x
和i
是二维张量,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>)
我目前有一个看起来像这样的张量(随机选择的数字),我将其称为 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)
因为x
和i
是二维张量,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>)