我正在使用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)
但无论如何我不需要逐层设置参数
答案 0 :(得分:0)
您可以对图层进行分组。如果要对所有线性层进行分组,最好的方法是使用modules
param_grp = []
for idx, m in enumerate(model.modules()):
if isinstance(m, nn.Linear):
param_grp.append(m.weight)