请稍等 ...
×

采纳答案成功!

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

梯度下降法核心公式简单修改了一下,theta -= eta * gradient结果运行结果出乎意料

老师,在实现梯度下降法时,我自己修改了下代码:图片描述
将 theta = theta - eta * gradient 改为了theta -= eta * gradient

运行结果:
图片描述
结果并不是想象中数据.
断点时,代码只执行1次就跳出循环了
然后自己构造了数据去测试,发现并不满足 if 条件:
图片描述

纠结好一会了,bobo老师帮忙看一下.

正在回答

1回答

因为 theta = theta - eta * gradient,每次 theta - eta * gradient 产生了一个新的 np.array 的对象,赋给 theta,也就是让 theta 指向了一个全新的向量;


但是,theta -= eta * gradient 只是修改当前 theta 指向的向量的内存。


因为前面有一句 last_theta = theta,这将直接也修改 last_theta 的值。


所以,如果你想使用 theta -= eta * gradient,就要让 last_theta 和 theta 的指向不一致。方法是,可以把 last_theta = theta 这一句改成:last_theta = np.array(theta)。

即根据 theta 的值,创建一个新的 np.array,赋给 last_theta。


继续加油!:)

3 回复 有任何疑惑可以回复我~
  • 谢谢老师,明白了,然后自己写了个测试搞清楚了,谢老师辛苦了,老师也加油(ง •̀_•́)ง
    回复 有任何疑惑可以回复我~ 2020-04-19 22:52:44
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信