pytorch 實現模型不同層設定不同的學習率方式

2022-10-04 15:15:21 字數 765 閱讀 3314

在目標檢測的模型訓練中, 我們通常都會有乙個特徵提取網路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,hebrtgddsn net.parameters())

params = [程式設計客棧

, ,

]optimizer = torch.optim.sgd(params, momentum=config.momentum, weight_decaywww.cppcns.com=config.weight_decay)

本文標題: pytorch 實現模型不同層設定不同的學習率方式

本文位址:

pytorch模型運算時間的不同

今天測試模型計算時間時,執行了這樣一段 在呼叫時發現 首次呼叫第乙個模型的計算時間 會比之後的模型計算時間長很多,執行結果如圖 可以看到即便是同樣是resnet50,第一次呼叫和第二次呼叫時間差別非常大。而且即便我改變了模型載入的順序,在呼叫時仍然是第乙個模型的計算時間遠超其他模型。因此我判斷pyt...

Pytorch實現模型蒸餾

簡單記錄一下使用pytorch進行模型蒸餾的主要 其餘資料處理的內容可以另行補充 import torch import torch.nn as nn import numpy as np from torch.nn import crossentropyloss from torch.utils....

pytorch載入預訓練模型後,訓練指定層

1 有了已經訓練好的模型引數,對這個模型的某些層做了改變,如何利用這些訓練好的模型引數繼續訓練 pretrained params torch.load pretrained model model the new model model.load state dict pretrained par...