【问题标题】:How to set lr_mult for convolutional layer in pytorch?如何在pytorch中为卷积层设置lr_mult?
【发布时间】:2019-06-26 11:05:39
【问题描述】:
在caffe中,可以选择设置卷积的学习倍数如下
layer {
name: "conv1a"
type: "Convolution"
bottom: "data"
top: "conv1a"
param {
lr_mult: 1
}
param {
lr_mult: 2
}
convolution_param {
num_output: 64
kernel_size: 3
pad: 1
stride: 1
bias_filler {
type: "constant"
value: 0
}
}
}
在pytorch中,如何只用SGD设置卷积层的lr_mult?谢谢
【问题讨论】:
标签:
machine-learning
deep-learning
caffe
pytorch
【解决方案1】:
PyTorch 中没有直接的等价物。学习率不被认为是模型的一部分,而是优化方案的一部分。 There is a help page 为每个参数设置不同的学习率,所以你可以这样做。如果你想让你的所有参数的学习率都为1.,除了conv1a应该有0.5,你可以这样做:
fast_parameters = []
slow_parameters = []
for name, parameter in model.named_parameters():
if 'conv1a' in name:
slow_parameters.append(parameter)
else:
fast_parameters.append(parameter)
optimizer = optim.SGD([
{'params': slow_parameters, 'lr': 0.5},
{'params': fast_parameters}
], lr=1.)
我使用named_parameters() 方法的地方。