Optimization 为什么';pytorch的学习率(LR)是否低于1e-08?

Optimization 为什么';pytorch的学习率(LR)是否低于1e-08?,optimization,deep-learning,pytorch,gradient-descent,Optimization,Deep Learning,Pytorch,Gradient Descent,我正在训练一名模特。为了克服过度拟合,我进行了优化、数据扩充等。我有一个更新的LR(我尝试了SGD和Adam),当有一个平台(也尝试了步骤)时,学习率会降低一个因子,直到达到LR 1e-08,但不会低于该值,并且在这一点之后,我的模型验证会受阻。我尝试将epsilon参数传递给Adam,以建议一个较小的值,但它仍然停留在LR 1e-08。我也通过了重量衰减,但这并没有改变情况。也没有将amsgrad设置为true 我做了一些研究,人们认为Adam optimizer存在固有的问题,但没有提到学习

我正在训练一名模特。为了克服过度拟合,我进行了优化、数据扩充等。我有一个更新的LR(我尝试了SGD和Adam),当有一个平台(也尝试了步骤)时,学习率会降低一个因子,直到达到LR 1e-08,但不会低于该值,并且在这一点之后,我的模型验证会受阻。我尝试将epsilon参数传递给Adam,以建议一个较小的值,但它仍然停留在LR 1e-08。我也通过了重量衰减,但这并没有改变情况。也没有将amsgrad设置为true

我做了一些研究,人们认为Adam optimizer存在固有的问题,但没有提到学习率——每次讨论都补充说,使用SGD,没有问题


为什么会这样?它是一个bug,还是因为作者认为它是一个毫无意义的小值而设计的呢?对于我的数据集来说,降低学习率似乎真的很有帮助,因为在学习率降到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()

就我个人而言,我不知道学习率的下限(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()

Richard的工作应该很有效,但如果有人想知道的话,我也得到了官方的答复

将较小的值设置为ReducelRon调度程序的(而不是Adam的)eps参数已起作用


eps(浮动)-应用于lr的最小衰减。如果新旧lr之间的差异小于eps,则忽略更新。默认值:1e-8。

Richard的解决方案应该很有效,但如果有人想知道的话,我也得到了正式的答案

将较小的值设置为ReducelRon调度程序的(而不是Adam的)eps参数已起作用


eps(浮动)-应用于lr的最小衰减。如果新旧lr之间的差异小于eps,则忽略更新。默认值:1e-8。

您能再解释一点或给出一些直觉,说明为什么缩放损失函数也会缩放学习率吗?-谢谢你能不能请你再解释一下,或者给出一些直觉,说明为什么缩放损失函数也会缩放学习率谢谢你