在目標(biāo)檢測(cè)的模型訓(xùn)練中, 我們通常都會(huì)有一個(gè)特征提取網(wǎng)絡(luò)backbone, 例如YOLO使用的darknet SSD使用的VGG-16。
為了達(dá)到比較好的訓(xùn)練效果, 往往會(huì)加載預(yù)訓(xùn)練的backbone模型參數(shù), 然后在此基礎(chǔ)上訓(xùn)練檢測(cè)網(wǎng)絡(luò), 并對(duì)backbone進(jìn)行微調(diào), 這時(shí)候就需要為backbone設(shè)置一個(gè)較小的lr。
1
2
3
4
5
6
7
|
class net(torch.nn.Module): def __init__( self ): super (net, self ).__init__() # backbone self .backbone = ... # detect self .... |
在設(shè)置optimizer時(shí), 只需要參數(shù)分為兩個(gè)部分, 并分別給定不同的學(xué)習(xí)率lr。
1
2
3
4
5
6
7
|
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) |
以上這篇pytorch 實(shí)現(xiàn)模型不同層設(shè)置不同的學(xué)習(xí)率方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/qq_42110481/article/details/81025575