返回信息流发现一个比较有意思的现象,用pytorch lighting写的代码,假设训练50个epoch,
直接从0到50一口气训完指标大概80的样子。
如果中间多次中断并加载参数重新训最后能涨不少比如82左右。
比如说训到10epoch,训练中断了,加载参数恢复训练接着训会发现第11个epoch的指标比一口气训完的第11个epoch的指标高不少。并且多次这样都是有增益的…
然后有点怀疑自己代码的问题,就用pytorch lighting官方的mnist代码测了一下,发现也是这样的…
初步定位了一下问题,如果恢复训练的时候用相同的随机数就不会带来增益,换一个随机数种子就会带来增益,看着像是多次恢复训练有些地方被随机初始化了,并且这样的随机能带来稳定的性能提升。感觉像是pytorch lighting埋的'坑'。
不知道uu们有没有碰到类似的情况?或者有没有什么见解[bbsemoji55358,56784]
之前发在悄悄话了,好像会被清帖,所以贴过来了~
随机数这个问题还挺奇怪的我想具体定位到重启训练是哪个部分随机了…但是好像有点困难
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #38484同步于 2022/6/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖
炼丹玄学
xmy980916
2022/6/29镜像同步18 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
现在分析了一个可能,目前看损失的曲线有一定的过拟合的情况,考虑模型有dropout,droppath层,多次恢复训练相当于让不同的神经元失活,鲁棒性更强了一定程度缓解了过拟合所以效果更好了
【 在 lt1103725556 的大作中提到: 】
: 一般来说都会规定随机种子的吧。。出现这种现象或许你可以去研究研究,在模型中自适应加入随机参数来提点就不用像你现在这样手动停了
dropout不是本来就是随机的么,你不重新训练他到下一轮也是让不同的神经元失活啊
【 在 xmy980916 的大作中提到: 】
: 现在分析了一个可能,目前看损失的曲线有一定的过拟合的情况,考虑模型有dropout,droppath层,多次恢复训练相当于让不同的神经元失活,鲁棒性更强了一定程度缓解了过拟合所以效果更好了
这样子啊,那我之前还理解错了。数据这块我查过了,不存在随机的地方。做了个小实验,发现固定了随机种子,但是dropout的输出还是不一样,所以之前怀疑是dropout层的问题。
【 在 zh19951213 的大作中提到: 】
: dropout不是本来就是随机的么,你不重新训练他到下一轮也是让不同的神经元失活啊