采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,在实现梯度下降法时,我自己修改了下代码: 将 theta = theta - eta * gradient 改为了theta -= eta * gradient
运行结果: 结果并不是想象中数据. 断点时,代码只执行1次就跳出循环了 然后自己构造了数据去测试,发现并不满足 if 条件:
纠结好一会了,bobo老师帮忙看一下.
因为 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。
继续加油!:)
谢谢老师,明白了,然后自己写了个测试搞清楚了,谢老师辛苦了,老师也加油(ง •̀_•́)ง
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
2.4k 19
3.4k 17
2.9k 15
1.6k 15
1.4k 14