我知道可以冻结网络中的各个层,例如仅训练预训练模型的最后一层。 但是,我想知道有什么方法可以将某些学习率应用于不同的层次。例如,在pytorch中将是:
optimizer = torch.optim.Adam([
{'params': paras['conv1'], 'lr': learning_rate / 10},
{'params': paras['middle'], 'lr': learning_rate / 3},
{'params': paras['fc'], 'lr': learning_rate }
], lr=learning_rate)
胶子和火炬的接口几乎相同。知道我如何在胶子中做到这一点吗?
答案 0 :(得分:2)
您可以通过修改lr_mult
来调整每一层的学习率:
for key, value in model.collect_params().items():
print value.lr_mult