【问题标题】:Replicating ResNet110(n=18) [closed]复制 ResNet110(n=18)[关闭]
【发布时间】:2021-08-25 09:39:35
【问题描述】:

我试图在 cifar 10 中复制与用于图像识别的深度残差学习中相同的重新发送 110 的结果。对于少于 110 层的 resnet,它是这样说的

我们从 0.1 的学习率开始,在 32k 和 48k 迭代时将其除以 10,并在 64k 迭代时终止训练,这取决于 45k/5k train/val 拆分。

对于一个有 110 层的 resnet,它说

在这种情况下,我们发现 0.1 的初始学习率稍微太大而无法开始收敛。所以我们使用 0.01 来预热训练,直到训练误差低于 80%(大约 400 次迭代),然后回到 0.1 并继续训练。其余的学习计划如前所述。

如何在 pytorch 中根据训练错误或迭代(他们提到大约 400 次迭代)更改学习率??

【问题讨论】:

  • 哪个错误?你能说得更具体点吗?
  • 训练错误。他们说“他们使用了 0.01 的学习率,但训练误差低于 80%”,他们没有提到如何发现错误。我猜他们错误地指定了 top1% 的准确度。
  • 您能否提供您在哪里找到该引文的论文?

标签: python pytorch torchvision


【解决方案1】:

一般来说,您可能正在寻找 torch.optim.lr_scheduler

具体来说,您可以使用lr_scheduler.MultiStepLR

n 个 epochs 后实现 learning_rate 的减少

按照使用 lr_scheduler 的建议方式,您将需要重新计算从 stepsepochs 的里程碑,因为更新是在整个 epochs 而不是 step 之后完成的。

如果那不能给你满意的结果,你实际上可以通过调用来“作弊” scheduler.step() 在每个批次(步骤)之后,然后在步骤数中通过里程碑。
然后记住不要混淆自己或有一天会碰巧编辑您的代码的人,至少发表评论以表明您正在以不太明显的方式使用库函数:D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-24
    • 2013-03-17
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 2011-11-08
    • 1970-01-01
    相关资源
    最近更新 更多