【问题标题】:Mask R-CNN optimizer and learning rate scheduler in PytorchPytorch 中的 Mask R-CNN 优化器和学习率调度器
【发布时间】:2021-03-13 00:53:01
【问题描述】:

在Mask R-CNN论文here中,优化器被描述为在MS COCO 2014/2015数据集上进行实例分割的训练(我相信这是数据集,如果有错误请纠正)

我们在 8 个 GPU 上进行训练(如此有效的 minibatch size 为 16) 进行 160k 次迭代,学习率为 0.02,在 120k 迭代时减少 10。我们 使用 0.0001 的权重衰减和 0.9 的动量。和 ResNeXt [45],我们在每个 GPU 上使用 1 个图像进行训练,并且相同 迭代次数,起始学习率为 0.01。

我正在尝试在 Pytorch 中为类似的应用程序编写优化器和学习率调度程序,以匹配此描述。

对于我拥有的优化器:

def get_Mask_RCNN_Optimizer(model, learning_rate=0.02):
    optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate, momentum=0.9, weight_decay=0.0001)
    return optimizer

对于学习率调度器我有:

def get_MASK_RCNN_LR_Scheduler(optimizer, step_size):
    scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=step_size, gammma=0.1, verbose=True)
    return scheduler

当作者说“减少 10”时,他们的意思是除以 10 吗?或者他们的字面意思是减 10,在这种情况下我们有一个负学习率,这看起来很奇怪/错误。任何见解都值得赞赏。

【问题讨论】:

  • 它们的意思是“除以 10”。正如您自己指出的那样,在这种情况下,减去 10 是一个荒谬的操作。将学习按 2、5 或 10 等值划分在文献中非常常见。学习率越小,你的收敛越精确(但也越慢)。本文只减少 LR 一次,但是很多训练使用常规减少,比如每 N epoch 除以 10,或者当收敛停止时
  • @trialNerror 如果您将此作为答案发布,我会接受。

标签: pytorch


【解决方案1】:

正如 cmets 中所指出的,作者的意思是除以 10。

【讨论】:

    猜你喜欢
    • 2020-03-19
    • 1970-01-01
    • 2020-11-16
    • 2020-10-16
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 2021-02-05
    • 2018-05-09
    相关资源
    最近更新 更多