Python之numpy库——矩阵相乘

在机器学习中,会遇见两个矩阵并非向量乘积,而是数值上的相乘。当下我是初学者,遇见后很困惑,于是搜索了相关资料,写个文章,总结一下个人理解。

后续会进行更新,我是用到哪些就查哪些,就总结哪些

一、 向量的点乘
也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。

1、设n1是3 x 3 的矩阵,n2 是1 x 3 的矩阵
Python之numpy库——矩阵相乘_第1张图片
如上图所示,n2的每一列分别与n1每一行的每一列的各个元素分别相乘,结果另存为一个新矩阵中,新矩阵的维度与n1 和 n2 中维度最大的一样。

2、 若n2是2 x 3 即二维三列的矩阵,与n1 即三行三列3 x 3的矩阵相乘,会报错,如下图:
Python之numpy库——矩阵相乘_第2张图片
意思就是以(3,3)和(2,3)的两个矩阵无法进行点乘运算。
3、于是我把矩阵n2换成4x3的矩阵保持列数一致。结果仍然是报错。
Python之numpy库——矩阵相乘_第3张图片
4、最后我把矩阵n3换成和矩阵n1一样的行列数即 3 x 3,结果正确。
Python之numpy库——矩阵相乘_第4张图片
从上图可以看出,两个维度一样的矩阵进行点乘时,是同一行的同一列元素分别相乘后存储到新的矩阵中,新矩阵的维度与n1和n2的维度相同。

5、在此之前,我所做的运算都是res = n1 * n2 和 res = n1 * n3,我又他们翻过来,换成res = n2 * n1 和 res = n3 * n1,结论一样,没有发生任何变化。

6、总结:
那么我是不是可以认为,两个矩阵相乘,c = a * b 其中a的维度任意,但是b的维度必须有限制。设矩阵a (n,m)
<1> b为(1,m)
<2> b 为(n,m)

你可能感兴趣的:(Python学习)