梯度下降中矩阵的dot
来源:6-4 实现线性回归中的梯度下降法
爱赵晓羊
2018-01-05
()
其中,(X_b.dot(theta)-y).dot(X_b[:,i]),有点疑问。
X_b是(m,n+1)矩阵,theta是(n+1,)行向量,y是(m,)行向量。
这里的np.dot是如何广播的呢?
谢谢bobo老师
写回答
1回答
-
不需要进行广播。
X_b是(m,n+1)的矩阵,theta是(n+1,1)的向量,二者dot,X_b.dot(theta)是(m,1)的向量。y也是(m,1)的向量,二者相减依然是(m,1)的向量。
X_b.dot(theta)-y 是一个(m,1)的向量;X_b[:,i]也是一个(m,1)的向量(从X_b中取出第i列),此时dot执行的是两个向量的点乘运算,即对应元素相乘再相加。最终结果是一个数。
之前第三章我印象里提过,numpy中对向量不分行向量和列向量,但是在进行dot运算的时候,可以理解为会自动转换为适应dot运算的向量。在这里,theta和y都应该被看做是(m,1)的列向量。
另外,这个课程中的编码,在矩阵操作的解释上,基本上都不使用广播(虽然内部的运算机制包含广播),换句话说,我希望学习的同学即使不理解广播的概念,也可以读懂编码的运算规则。所以解释的时候可以直接取两个运算对象(矩阵或者向量)进行运算的数学含义。
232018-01-05
相似问题