pytorch 实现模型不同层设置不同的学习率方式
在目标检测的模型训练中,我们通常都会有一个特征提取网络backbone,例如YOLO使用的darknetSSD使用的VGG-16。
为了达到比较好的训练效果,往往会加载预训练的backbone模型参数,然后在此基础上训练检测网络,并对backbone进行微调,这时候就需要为backbone设置一个较小的lr。
classnet(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(lambdap:id(p)notinbase_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)
以上这篇pytorch实现模型不同层设置不同的学习率方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。