返回信息流我在使用pytorch的梯度下降法进行参数更新的时候,故意在反向传播后把所有梯度归零,但是训练出的参数仍和之前的参数有稍微的不一样,这是为什么?
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #37581同步于 2021/4/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖
[请教]pytorch参数更新时,SGD梯度为0,为什么参数仍可以更新
KarryXu
2021/4/20镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
【 在 naginoa 的大作中提到: 】
: 因为每次实验初始化的参数可能都会不同吧。你试试每次梯度归0,做多次实验会参数一样吗
我的逻辑是这样的,先进行模型预训练,然后打印权重,然后再进行训练,训练的时候将权重置零,然后打印参数,正常来讲,本次打印权重和预训练后的权重一样,但是目前的实验结果是不一样的
【 在 WinKawaks 的大作中提到: 】
: SGD设置了动量吧?optimizer给weight设置的梯度并不等同于当前计算得到的grad,其中也包含了之前的grad。
是的,确实是设置动量了,现在动量取消了,除了动量还有别的影响因素吗?避避坑
如果设置了weight decay的话也会有梯度变化的问题,但是一般情况下大家用SGD仅设置动量,很少设置weight decay。
【 在 KarryXu 的大作中提到: 】
: 是的,确实是设置动量了,现在动量取消了,除了动量还有别的影响因素吗?避避坑
【 在 WinKawaks 的大作中提到: 】
: 如果设置了weight decay的话也会有梯度变化的问题,但是一般情况下大家用SGD仅设置动量,很少设置weight decay。
:
weight decay是指正则化项前的系数吗?如果我仅仅手动添加了正则项而没有使用SGD内的正则化项,是不是也会引起权重变化呐?