pytorch中的乘法总结

一、简介

  • 点积(数量积,dot product)
  • 点积(数量积,dot product)
  • 点积(数量积,dot product)

二、用法

1. 点积(torch.dot())

即数量积,对应相乘然后求和。

torch.dot(input, other, *, out=None) → Tensor
# 输入的两个张量必须为1维的。

和numpy的dot product不同,numpy的点积支持二维矩阵运算,但是得到的是矩阵积(即按照矩阵相乘法则进行计算。)

2. 矩阵逐元素乘法(Element-wise)(torch.mul())

两个矩阵对应相乘,有广播机制。

torch.mul()

3. 矩阵乘法(matrix-mattix multiplication)

矩阵乘法:nm 和 md矩阵相乘得 m*d.

  • 二维矩阵乘法( torch.mm() )
# 二维矩阵的矩阵乘法,不支持广播机制。
torch.mm()
  • 三维带batch的矩阵乘法 ( torch.bmm() )

输入的两个矩阵带有batch size的维度(第一维且相同),不支持广播机制。
输入的两个矩阵形状为(b, n, m)(b, m, d)

torch.bmm(bmat1, bmat2)
  • 多维矩阵乘法 ( torch.matmul() )
torch.matmul()

两个输入均1-d:按照点积进行运算。
两个输入均2-d:按照二维矩阵乘积运算。
1-d和2-d:
(n) 和 (n, m)当成(1, n) 和 (n, m),求得矩阵乘积为(1, m),然后前置维度1删除最终得到 (m).
④**2-d和1-d:和③同理,
N-d和M-d(M、N均≥1 且 M、N其中一个至少>2):**最后两个维度当成矩阵乘积,前面的均当成batch。如 ( j ∗ 1 ∗ n ∗ n ) 和 ( k ∗ n ∗ n ) = ( j ∗ k ∗ n ∗ n ) (j*1*n*n)和(k*n*n) =(j*k*n*n) (j1nn)(knn)=(jknn),同理, ( j ∗ 1 ∗ n ∗ m ) 和 ( k ∗ m ∗ p ) = ( j ∗ k ∗ n ∗ p ) (j*1*n*m)和(k*m*p) =(j*k*n*p) (j1nm)(kmp)=(jknp).

你可能感兴趣的:(4.,Pytorch,pytorch,线性代数,python)