两个张量的矩阵乘积

时间:2019-05-04 05:28:24

标签: python matrix pytorch linear-algebra tensor

如何在PyTorch中计算两个张量的矩阵积?

x =  torch.Tensor([[1, 2, 3], [1, 2, 3]]).view(-1, 2)
y =  torch.Tensor([[2, 1]]).view(2, -1)

我对这些选项感到困惑。

enter image description here

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)只会给出一个标量值,这也是错误的,因为您希望进行矩阵乘法,而不是内部积。