【问题标题】:How to apply layer-wise learning rate in Pytorch?如何在 Pytorch 中应用分层学习率?
【发布时间】:2019-01-18 23:06:53
【问题描述】:

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

因此,例如,第一层的学习率非常低,为 0.000001,然后逐渐增加以下每一层的学习率。这样最后一层的学习率就会达到 0.01 左右。

这在 pytorch 中可行吗?知道如何存档吗?

【问题讨论】:

    标签: python neural-network deep-learning pytorch


    【解决方案1】:

    解决办法如下:

    from torch.optim import Adam
    
    model = Net()
    
    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)。 诀窍是当您创建模型时,您应该为图层命名,或者您可以对其进行分组。

    【讨论】:

    • 太好了,正是我想要的——谢谢!
    猜你喜欢
    • 2016-04-28
    • 1970-01-01
    • 2017-10-04
    • 2020-11-16
    • 2021-09-27
    • 2020-03-19
    • 2019-09-03
    • 2016-11-19
    相关资源
    最近更新 更多