使用NumPy计算矩阵乘积:两段矩阵点积代码是否等价?
这两段NumPy矩阵乘积代码功能一致吗?
嘿,这个问题问得很到位!咱们直接拆解来看:
首先先把两段代码摆出来:
- 代码段1:
layer_1 = self.layer_0.dot(self.weights_0_1) - 代码段2:
layer_1 = np.dot(self.layer_0, self.weights_0_1)
结论先行:这两段代码功能完全一致,最终计算出来的layer_1结果没有任何区别,原因如下:
- 代码段1里的
dot是NumPy数组(或者numpy.matrix对象)的实例方法,只要self.layer_0是一个NumPy数组/矩阵,调用它的dot方法传入另一个维度兼容的数组/矩阵,本质就是在执行标准的矩阵乘积操作。 - 代码段2里的
np.dot是NumPy提供的顶层全局函数,它的作用和数组实例的dot方法完全重合——底层逻辑是一样的,都是用来计算两个数组的矩阵乘积。
额外补个小细节:如果self.layer_0是numpy.matrix类型,两者的行为100%对齐;如果是普通的numpy.ndarray类型,数组的dot方法其实就是内部调用了np.dot来实现的,所以结果也完全相同。
内容的提问来源于stack exchange,提问作者embedded.95
相关产品推荐
相关产品推荐

