梯度下降中矩阵的dot

来源:6-4 实现线性回归中的梯度下降法

爱赵晓羊

2018-01-05

http://img.mukewang.com/szimg/5a4f240c0001cabe03810200.jpg

其中,(X_b.dot(theta)-y).dot(X_b[:,i]),有点疑问。

X_b是(m,n+1)矩阵,theta是(n+1,)行向量,y是(m,)行向量。

这里的np.dot是如何广播的呢?

谢谢bobo老师

写回答

1回答

liuyubobobo

2018-01-05

不需要进行广播。


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)的列向量。


另外,这个课程中的编码,在矩阵操作的解释上,基本上都不使用广播(虽然内部的运算机制包含广播),换句话说,我希望学习的同学即使不理解广播的概念,也可以读懂编码的运算规则。所以解释的时候可以直接取两个运算对象(矩阵或者向量)进行运算的数学含义。

2
3
爱赵晓羊
回复
liuyubobobo
谢谢bobo老师
2018-01-05
共3条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程