dus*_*usa 1 optimization gradient-descent deep-learning pytorch
我正在训练一个模型。为了克服过度拟合,我做了优化、数据增强等。我有一个更新的 LR(我尝试了 SGD 和 Adam),当出现平台期(也尝试过步骤)时,学习率会降低一个因子,直到达到达到 LR 1e-08 但不会低于该值,并且我的模型的验证在此之后陷入困境。我尝试将 epsilon 参数传递给 Adam 以建议较小的值,但它仍然卡在 LR 1e-08。我也经历了体重衰减,但这并没有改变情况。将 amsgrad 设置为 true 也没有。
我做了一些研究,人们认为 Adam 优化器存在固有的问题,但没有提到学习率 - 每次讨论都补充说,使用 SGD 就没有问题。
为什么是这样?这是一个错误还是因为作者认为它是一个毫无意义的小值而设计的?似乎对我的数据集设置较小的学习率确实有帮助,因为在学习率降至 LR 1e-08 之前一切似乎都很好。
就我个人而言,我不知道学习率的下限(0.0 除外)。但是你可以通过在计算反向传递之前减少损失来达到较低学习率的效果:
outputs = model(batch)
loss = criterion(outputs, targets)
# Equivalent to lowering the learning rate by a factor of 100
loss = loss / 100
self.optimizer.zero_grad()
loss.backward()
self.optimizer.step()
Run Code Online (Sandbox Code Playgroud)