您好,登錄后才能下訂單哦!
在目標檢測的模型訓練中, 我們通常都會有一個特征提取網絡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)
以上這篇pytorch 實現模型不同層設置不同的學習率方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。