两个张量的矩阵乘积[重复]
Posted
技术标签:
【中文标题】两个张量的矩阵乘积[重复]【英文标题】:matrix product of the two tensors [duplicate] 【发布时间】:2019-09-22 14:05:28 【问题描述】:如何在 PyTorch 中计算两个张量的矩阵乘积?
x = torch.Tensor([[1, 2, 3], [1, 2, 3]]).view(-1, 2)
y = torch.Tensor([[2, 1]]).view(2, -1)
我对这些选项感到困惑。
【问题讨论】:
PyTorch
,而不是您应用的标签中的TensorFlow
@graseza 这是来自 Udacity Scholarship 的问题。请自行研究。
【参考方案1】:
您可以使用以下代码中的选项之一:
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)
只会给出一个标量值,这也是错误的,因为您希望进行矩阵乘法,而不是内积。
【讨论】:
以上是关于两个张量的矩阵乘积[重复]的主要内容,如果未能解决你的问题,请参考以下文章