np.dot与np.matmul的区别

1.二者都是矩阵乘法。
2.np.matmul中禁止矩阵与标量的乘法。
3.在矢量乘矢量的內积运算中,np.matmul与np.dot没有区别。
4.np.matmul中,多维的矩阵,将前n-2维视为后2维的元素后,进行乘法运算。

 

pytorch中matmul和mm和bmm区别

matmul

å¨è¿éæå¥å¾çæè¿°
mm

å¨è¿éæå¥å¾çæè¿°
bmm

顾名思义, 就是两个batch矩阵乘法.

å¨è¿éæå¥å¾çæè¿°
结论

从官方文档可以看出,

mm只能进行矩阵乘法,也就是输入的两个tensor维度只能是(n×m)和(m×p) 
bmm是两个三维张量相乘, 两个tensor维度是(b×m×p) 和(b×n×p) , 第一维b代表batch_size
matmul可以进行张量乘法, 输入可以是高维.

--------------------- 

扩展,什么意思呢:

Q:关于torch.matmul文档中批量矩阵乘法的要点提到了以下语句:
“非矩阵(即批量)维度被广播(因此必须是可广播的)。例如,如果tensor1是(j×1 ×n×m)张量和张量2是(k×m×p)张量,out是(j×k×n×p)张量。“

在本声明中,我不清楚如何识别非矩阵维度。例如,如果我有两个大小分别为(1000,500,100,10)和(500,10,50)的矩阵A和B. 在这种情况下,矩阵的维数乘以什么?批次中将进行多少次乘法?

A:嗨,

矩阵乘法总是使用最后两个维度完成。之前的所有内容都被视为批量。
在您的情况下,矩阵乘法的大小为100x10和10x50。批量维度为1000x500和500,因此将广播到1000x500。因此最终输出的大小为1000x500x100x50。

你可能感兴趣的:(python)