我知道冻结网络中的单层是可能的,例如,只训练预训练模型的最后一层。我正在寻找的是一种将特定的学习率应用于不同层的方法。
例如,第一层的学习率非常低,为0.000001,然后逐渐增加后续每一层的学习率。所以最后一层的学习率是0.01左右。
在pytorch中这是可能的吗?你知道我怎么才能把这个存档吗?
发布于 2018-08-12 01:38:42
以下是解决方案:
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)。诀窍是,当您创建模型时,您应该为层指定名称,也可以对其进行分组。
https://stackoverflow.com/questions/51801648
复制相似问题