两个张量的矩阵乘积[重复]

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

【讨论】:

以上是关于两个张量的矩阵乘积[重复]的主要内容,如果未能解决你的问题,请参考以下文章

张量和卷积神经网络

张量t-product积基础 | 循环矩阵与向量乘积的离散傅立叶变换 · 循环矩阵的傅里叶对角化

如何在 PyTorch 中做矩阵的乘积

如何检查两个 Torch 张量或矩阵是不是相等?

题目1489:计算两个矩阵的乘积

如何对两个 PyTorch 量化张量进行矩阵相乘?