请稍等 ...
×

采纳答案成功!

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

模拟梯度下降一课中,设置n_iters = 1e4,结果报错‘Result too large'

图片描述
图片描述
尝试把i_iters赋值为1e3可以,但是1e4就开始报错。求教波波老师。

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2018-12-23 12:04:58

说明你的梯度下降法没有收敛,越搜索值越大,此时需要调小eta的值试试看:)


关于梯度下降法溢出的更多相关讨论,可以参考这里:https://coding.imooc.com/learn/questiondetail/69537.html 


另外一个修改方案,是每次求出的梯度,进行一下归一化处理。就是我们只取gradient的方向,而步长完全由eta负责。这样的话,这个情况也会得到缓解。具体可以参考这个问答,尤其是后续的讨论:https://coding.imooc.com/learn/questiondetail/56515.html


加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 闪闪一年 #1
    感谢波波老师,eta调小是可以的。疑问在于
    1)完全照着课程的代码,课程中1e4是可以的。为什么我这里跑就会报错。
    2)而且已经设置了循环限制数,为啥1e3可以,1e4就不行,在eta不变的情况下,感觉如果循环限制在1e3不会陷入死循环,那1e4也应该不会才对。还是说这个报错“Result too large”和循环没什么关系。
    回复 有任何疑惑可以回复我~ 2018-12-23 13:57:22
  • liuyubobobo 回复 提问者 闪闪一年 #2
    参数的设定是和数据相关的,而不是算法相关的,不知道你是否使用的适合课程一样的数据?如果和课程的数据一样的话,下载一下课程的官方代码,在你的环境下跑跑看,看是否也会出现同样的情况?如果不会的话,看一看是不是其他地方有问题?另外,关于梯度下降法发散的问题,我在原答案上补充了两个链接,供参考:)加油!
    回复 有任何疑惑可以回复我~ 2018-12-23 14:41:37
  • 提问者 闪闪一年 回复 liuyubobobo #3
    收到,我尝试一下
    回复 有任何疑惑可以回复我~ 2018-12-24 09:34:14
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号