【问题标题】:Manually update momentum terms in pytorch optimizers在 pytorch 优化器中手动更新动量项
【发布时间】:2021-05-14 17:50:23
【问题描述】:

Adam 优化器有几个术语用于向梯度下降算法添加“动量”,使每个变量的步长自适应:

具体来说,对于 Adam here,我指的是 m-hat 和 v-hat 术语。

不过,有时您可能希望手动更新它们的状态,例如为变量子集重置训练。在 PyTorch 的基于动量的优化器(尤其是 Adam)中有没有办法做到这一点?

【问题讨论】:

    标签: pytorch gradient-descent


    【解决方案1】:

    由于 mhat 和 vhat 依赖于“betas”参数,如果您愿意,您可以在训练期间对其进行更新,如下所示:

    optimizer.param_groups[0]['betas'] = (beta1,beta2)
    

    但是,为了解决您的问题,https://github.com/pytorch/pytorch/blob/22b12179db15923007aaec80829766079bb0b9d1/torch/optim/_functional.py#L53 的源代码似乎不支持直接修改 mhat (exp_avg) 和 vhat (exp_avg_sq,我至少假设)。如果您希望这样做,我认为您必须实现自己的 Adam 优化器功能(如果您只是复制源代码并根据您想要使用的内容进行修改,这似乎相对简单)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-19
      • 2019-09-02
      • 2022-01-08
      • 2017-03-28
      • 2022-01-26
      • 2023-01-22
      • 1970-01-01
      • 2020-08-31
      相关资源
      最近更新 更多