如何在PyTorch中计算两个张量的矩阵积?
x = torch.Tensor([[1, 2, 3], [1, 2, 3]]).view(-1, 2)
y = torch.Tensor([[2, 1]]).view(2, -1)
我对这些选项感到困惑。
答案 0 :(得分:0)
您可以使用以下代码中的一个选项:
In [188]: torch.einsum("ij, jk -> ik", x, y)
Out[188]:
tensor([[4.],
[7.],
[7.]])
In [189]: x.mm(y)
Out[189]:
tensor([[4.],
[7.],
[7.]])
In [193]: x @ y
Out[193]:
tensor([[4.],
[7.],
[7.]])
In [194]: torch.matmul(x, y)
Out[194]:
tensor([[4.],
[7.],
[7.]])
如您所见,所有这些方法都会给我们带来相同的结果。
x*y
是hadamard乘积(逐元素乘法),在这种情况下不起作用。同样,torch.dot()
也将失败,因为它需要一维张量。 torch.sum(x*y)
只会给出一个标量值,这也是错误的,因为您希望进行矩阵乘法,而不是内部积。