梯度下降法核心公式简单修改了一下,theta -= eta * gradient结果运行结果出乎意料
来源:6-4 实现线性回归中的梯度下降法
我不愿让你一个人
2020-04-19
老师,在实现梯度下降法时,我自己修改了下代码:
将 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。
继续加油!:)
312020-04-19
相似问题