请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

梯度下降中矩阵的dot

https://img1.sycdn.imooc.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回答

不需要进行广播。


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 回复 有任何疑惑可以回复我~
  • 提问者 爱赵晓羊 #1
    谢谢bobo老师如此迅速的回复。
    X_b.dot(theta)-y 返回的是(m,1)向量
    X_b[:,i] 返回的是(m,)向量
    他们两者进行dot运算,其中的广播如何进行呢?
    再次谢谢bobo老师
    回复 有任何疑惑可以回复我~ 2018-01-05 15:23:48
  • liuyubobobo 回复 提问者 爱赵晓羊 #2
    抱歉只聊了一半,我在原答案上进行了补充:)
    回复 有任何疑惑可以回复我~ 2018-01-05 15:55:25
  • 提问者 爱赵晓羊 回复 liuyubobobo #3
    谢谢bobo老师
    回复 有任何疑惑可以回复我~ 2018-01-05 15:59:19
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信