您的位置:首页 > 其它

pytorch 模型不同层设置不同的学习率

2018-07-13 09:16 330 查看

 

在目标检测的模型训练中, 我们通常都会有一个特征提取网络backbone, 例如YOLO使用的darknet SSD使用的VGG-16。

为了达到比较好的训练效果, 往往会加载预训练的backbone模型参数, 然后在此基础上训练检测网络, 并对backbone进行微调, 这时候就需要为backbone设置一个较小的lr。

[code]class net(torch.nn.Module):
def __init__(self):
super(net, self).__init__()
# backbone
self.backbone = ...
# detect
self....

在设置optimizer时, 只需要参数分为两个部分, 并分别给定不同的学习率lr。

[code]base_params = list(map(id, net.backbone.parameters()))
logits_params = filter(lambda p: id(p) not in base_params, net.parameters())
params = [
{"params": logits_params, "lr": config.lr},
{"params": net.backbone.parameters(), "lr": config.backbone_lr},
]
optimizer = torch.optim.SGD(params, momentum=config.momentum, weight_decay=config.weight_decay)

 

 

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: