如何在Pytorch中应用分层学习率?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (1117)

我知道可以冻结网络中的单个层,例如,仅训练预训练模型的最后一层。我正在寻找的是一种将某些学习率应用于不同层次的方法。

因此,例如,第一层的学习率非常低,为0.000001,然后对于以下每一层逐渐增加学习率。因此,最后一层最终学习率为0.01左右。

在pytorch中这可能吗?知道如何归档这个吗?

提问于
用户回答回答于
from torch.optim import Adam

model = SomeKindOfModel()

optim = Adam(
    [
        {"params": model.fc.parameters(), "lr": 1e-3},
        {"params": model.agroupoflayer.parameters()},
        {"params": model.lastlayer.parameters(), "lr": 4e-2},
    ],
    lr=5e-4,
)

未在优化器中指定的其他参数不会进行优化。因此,你应该声明所有图层或组(或你要优化的图层)。如果你没有指定学习率,它将采用全球学习率(5e-4)。诀窍是,当你创建模型时,你应该为图层指定名称,或者你可以对其进行分组。

扫码关注云+社区

领取腾讯云代金券