矩阵/Tensor之间的叉乘( matmul / @ ):
矩阵乘法规则:
( N , M ) @ ( M , P ) = ( N , P )
如果两个矩阵/Tensor的形状相同,则两个矩阵/Tensor的点乘*的结果就是两个矩阵/Tensor对应位置相乘,要求矩阵/Tensor维数相同,且各个维度的长度相同。
当运算中的两个矩阵/Tensor的形状不同时,Numpy和Pytorch将自动触发broadcast机制。
Broadcast机制:两个矩阵broadcast之后的结果每一维都是两个矩阵中对应维度的最大值,如果维数不一致则在前面加一补齐。
使用broadcast必须满足两个规则:相对应的维数相等或有一个矩阵的维数是1。
最后结果的计算方法是:先将两个矩阵都broadcast到结果的维数,然后再按照相同维度的矩阵对应元素相乘、相加。
矩阵和向量之间的矩阵乘法:
在左边的向量是行向量,在右边的向量是列向量,这样的好处是结果矩阵一定是一个向量。
矩阵和向量之间的按元素乘法、加法: