最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pytorch如何加載部分權(quán)重

 更新時間:2023年09月15日 10:14:16   作者:Mr_寒路  
這篇文章主要介紹了Pytorch如何加載部分權(quán)重問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1.修改網(wǎng)絡層輸出

比如在人臉檢測項目中,已經(jīng)訓練好人臉框的回歸,但是此時需要再加入人臉關鍵點。

為了節(jié)約大量時間,我們可以加載部分權(quán)重。加載的網(wǎng)絡權(quán)重

if os.path.exists(self.load_params):
	pretext_model = torch.load(self.load_params)

打印出來,會看到網(wǎng)絡權(quán)重存儲在一個字典中,需要修改哪一層,用字典的鍵索引值進行修改。

比如原本輸出層為4,我將網(wǎng)絡輸出層修改為14,又由于輸出的都是坐標值,屬于同一分布,所以我將原參4復制擴充為了14,效果非常好。

w = pretext_model["fc2.weight"]
b = pretext_model["fc2.bias"]
pretext_model["fc2.weight"] = torch.cat((w,w,w,w[:2]),dim=0)
pretext_model["fc2.bias"] = torch.cat((b,b,b,b[:2]),dim=0)

最后加載修改后的參數(shù)

self.net.load_state_dict(pretext_model)

2.刪除或增加了網(wǎng)絡層

查看模型的參數(shù),也是存放在一個字典中

if os.path.exists(self.load_params):
	pretext_model = torch.load(self.load_params) #加載的參數(shù)
	model_dict = net.state_dict()  #模型參數(shù)
	print(model_dict)
	print(pretext_model)
#如果模型有k層,就加載
state_dict = {k: v for k, v in pretext_model.items() if k in model_dict.keys()}
model_dict.update(state_dict)
net.load_state_dict(model_dict)

3.遷移學習

有時我們也會用別人的模型,加載與訓練參數(shù),但是需要對輸出層做一些修改,一般有兩種方法,直接修改輸出層個數(shù)或增加網(wǎng)絡層

修改輸出層個數(shù)

net = models.vgg19(pretrained=True) #下載與訓練參數(shù)
print(net)  #查看網(wǎng)絡結(jié)構(gòu)
net.classifier[6] = torch.nn.Linear(4096,10) #將輸出層修改為10分類

增加輸出網(wǎng)絡層

num_fc_ftr = net.classifier[6]
net.fc = nn.Linear(num_fc_ftr, 128)
net.out = nn.Linear(128, 10)

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論

阿拉尔市| 抚宁县| 崇左市| 雅江县| 搜索| 五原县| 祁阳县| 饶阳县| 新巴尔虎右旗| 马尔康县| 洪江市| 屏东县| 凯里市| 岱山县| 邹平县| 漠河县| 富源县| 融水| 新竹市| 大石桥市| 介休市| 龙江县| 繁峙县| 平潭县| 京山县| 大埔县| 石屏县| 武乡县| 新晃| 灵川县| 萍乡市| 舟山市| 怀仁县| 托克逊县| 哈密市| 加查县| 百色市| 城步| 若尔盖县| 竹北市| 松江区|