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