pytorch 实现模型不同层设置不同的学习率方式
时间:2022-04-17 08:58:25|栏目:Python代码|点击: 次
在目标检测的模型训练中, 我们通常都会有一个特征提取网络backbone, 例如YOLO使用的darknet SSD使用的VGG-16。
为了达到比较好的训练效果, 往往会加载预训练的backbone模型参数, 然后在此基础上训练检测网络, 并对backbone进行微调, 这时候就需要为backbone设置一个较小的lr。
class net(torch.nn.Module): def __init__(self): super(net, self).__init__() # backbone self.backbone = ... # detect self....
在设置optimizer时, 只需要参数分为两个部分, 并分别给定不同的学习率lr。
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)
栏 目:Python代码
下一篇:Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
本文标题:pytorch 实现模型不同层设置不同的学习率方式
本文地址:http://www.codeinn.net/misctech/199358.html