如何在pytorch中为不同的层设置不同的学习率

时间:2017-05-06 08:15:36

标签: python-2.7 machine-learning pytorch

我正在使用resnet50与pytorch进行微调,并希望将最后一个完全连接层的学习速率设置为10 ^ -3,而其他层的学习速率设置为10 ^ -6。我知道我可以按照其文档中的方法进行操作:

optim.SGD([{'params': model.base.parameters()},
           {'params': model.classifier.parameters(), 'lr': 1e-3}], 
          lr=1e-2, momentum=0.9)

但无论如何我不需要逐层设置参数

1 个答案:

答案 0 :(得分:0)

您可以对图层进行分组。如果要对所有线性层进行分组,最好的方法是使用modules

param_grp = []

for idx, m in enumerate(model.modules()):
    if isinstance(m, nn.Linear):
        param_grp.append(m.weight)