采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
尝试把i_iters赋值为1e3可以,但是1e4就开始报错。求教波波老师。
说明你的梯度下降法没有收敛,越搜索值越大,此时需要调小eta的值试试看:)
关于梯度下降法溢出的更多相关讨论,可以参考这里:https://coding.imooc.com/learn/questiondetail/69537.html
另外一个修改方案,是每次求出的梯度,进行一下归一化处理。就是我们只取gradient的方向,而步长完全由eta负责。这样的话,这个情况也会得到缓解。具体可以参考这个问答,尤其是后续的讨论:https://coding.imooc.com/learn/questiondetail/56515.html
加油!:)
感谢波波老师,eta调小是可以的。疑问在于 1)完全照着课程的代码,课程中1e4是可以的。为什么我这里跑就会报错。 2)而且已经设置了循环限制数,为啥1e3可以,1e4就不行,在eta不变的情况下,感觉如果循环限制在1e3不会陷入死循环,那1e4也应该不会才对。还是说这个报错“Result too large”和循环没什么关系。
参数的设定是和数据相关的,而不是算法相关的,不知道你是否使用的适合课程一样的数据?如果和课程的数据一样的话,下载一下课程的官方代码,在你的环境下跑跑看,看是否也会出现同样的情况?如果不会的话,看一看是不是其他地方有问题?另外,关于梯度下降法发散的问题,我在原答案上补充了两个链接,供参考:)加油!
收到,我尝试一下
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
3.2k 19
4.2k 17
3.6k 15
2.0k 15
1.9k 14
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号