Update 1
我根据“无论坡度如何,你都希望从该点返回 10 倍”更新了我的 lr。并将其设置为
max_lr=-切片(1e-3, 1e-2)
这就是我得到的
和情节
这是什么意思?
正如您在第二张图中看到的那样
从 1e-08 开始损失就非常好,但我从未将 lr 设置为 1e-08,为什么我会看到这个?
损失在 1e-07 和 1e-04 之间上下波动,最终当 lr 在 4e-05 左右恢复时,损失飙升至近 0.05。这是什么意思?过度拟合?为什么最初当学习率约为相同值(4e-05)时,损失看起来还不错?
从批次处理/损失中,我可以看到 train_loss 和 valid_loss 结合在一起并且看起来非常好。这意味着模型训练得很好?如果训练有素,为什么会出现图 2 结尾处的突然上升?
我已经遵循了挑选正确lr的规则,为什么它不起作用?我可以断定 lr_find() 无法正常工作吗?
这是我的 lr_find() 图
然后根据它的图表,我选择了最陡的坡度部分:1e-2到1e-1作为我的lr。
这是代码:
learn.fit_one_cycle(20, max_lr=slice(1e-2,1e-1))
但这是我在训练期间得到的
这是 learn.recorder 的绘图
learn.recorder.plot_lr()
learn.recorder.plot()
learn.recorder.plot_losses()
正如您所看到的,valid_loss 周期性地变得更糟。所以我的结论是lr_find()方法不能正常工作。
我怎样才能验证它?
如果你想查看完整的代码,这里是;唯一的区别是我使用to_fp16()
:
learn = cnn_learner(data, models.resnet50, metrics=error_rate).to_fp16()
https://forums.fast.ai/t/train-loss-and-valid-loss-look-very-good-but-predicting-really-bad/60925 https://forums.fast.ai/t/train-loss-and-valid-loss-look-very-good-but-predicting-really-bad/60925
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)