我想为每个参数的最低级别设置特定的学习率。即内核权重和偏差中的每个值都应该有自己的学习率。
我可以像这样指定过滤学习率:
optim = torch.optim.SGD([{'params': model.conv1.weight, 'lr': 0.1},], lr=0.01)
但是当我想降低一个级别时,就像这样:
optim = torch.optim.SGD([{'params': model.conv1.weight[0, 0, 0, 0], 'lr': 0.1},], lr=0.01)
我收到一个错误:ValueError: can't optimize a non-leaf Tensor
我还尝试指定一个与过滤器形状相同的学习率,例如'lr': torch.ones_like(model.conv1.weight)
,但这也没有成功。
有没有办法做到这一点torch.optim
?