Pytorch如何加載部分權(quán)重
1.修改網(wǎng)絡(luò)層輸出
比如在人臉檢測(cè)項(xiàng)目中,已經(jīng)訓(xùn)練好人臉框的回歸,但是此時(shí)需要再加入人臉關(guān)鍵點(diǎn)。
為了節(jié)約大量時(shí)間,我們可以加載部分權(quán)重。加載的網(wǎng)絡(luò)權(quán)重
if os.path.exists(self.load_params): pretext_model = torch.load(self.load_params)
打印出來(lái),會(huì)看到網(wǎng)絡(luò)權(quán)重存儲(chǔ)在一個(gè)字典中,需要修改哪一層,用字典的鍵索引值進(jìn)行修改。
比如原本輸出層為4,我將網(wǎng)絡(luò)輸出層修改為14,又由于輸出的都是坐標(biāo)值,屬于同一分布,所以我將原參4復(fù)制擴(kuò)充為了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)絡(luò)層
查看模型的參數(shù),也是存放在一個(gè)字典中
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.遷移學(xué)習(xí)
有時(shí)我們也會(huì)用別人的模型,加載與訓(xùn)練參數(shù),但是需要對(duì)輸出層做一些修改,一般有兩種方法,直接修改輸出層個(gè)數(shù)或增加網(wǎng)絡(luò)層
修改輸出層個(gè)數(shù)
net = models.vgg19(pretrained=True) #下載與訓(xùn)練參數(shù) print(net) #查看網(wǎng)絡(luò)結(jié)構(gòu) net.classifier[6] = torch.nn.Linear(4096,10) #將輸出層修改為10分類(lèi)
增加輸出網(wǎng)絡(luò)層
num_fc_ftr = net.classifier[6] net.fc = nn.Linear(num_fc_ftr, 128) net.out = nn.Linear(128, 10)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python如何給字典的鍵對(duì)應(yīng)的值為字典項(xiàng)的字典賦值
這篇文章主要介紹了python如何給字典的鍵對(duì)應(yīng)的值為字典項(xiàng)的字典賦值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Pandas設(shè)置數(shù)據(jù)顯示格式實(shí)現(xiàn)方式
這篇文章主要介紹了Pandas設(shè)置數(shù)據(jù)顯示格式實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-10-10
Python中創(chuàng)建游戲的第一步之安裝Pygame庫(kù)教程
Pygame是跨平臺(tái)Python模塊,專(zhuān)為電子游戲設(shè)計(jì),包含圖像、聲音,下面這篇文章主要給大家介紹了關(guān)于Python中創(chuàng)建游戲的第一步之安裝Pygame庫(kù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
使用python腳本實(shí)現(xiàn)查詢(xún)火車(chē)票工具
這篇文章主要介紹了使用python腳本實(shí)現(xiàn)查詢(xún)火車(chē)票工具,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07
python基于隱馬爾可夫模型實(shí)現(xiàn)中文拼音輸入
這篇文章主要介紹了python基于隱馬爾可夫模型實(shí)現(xiàn)中文拼音輸入的相關(guān)資料,需要的朋友可以參考下2016-04-04
Python中的優(yōu)先隊(duì)列(priority?queue)和堆(heap)
這篇文章主要介紹了Python中的優(yōu)先隊(duì)列(priority?queue)和堆(heap),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
Python和Ruby中each循環(huán)引用變量問(wèn)題(一個(gè)隱秘BUG?)
這篇文章主要介紹了Python和Ruby中each循環(huán)引用變量問(wèn)題,類(lèi)似PHP的foreach中使用引用變量的問(wèn)題,需要的朋友可以參考下2014-06-06
python自動(dòng)化工具日志查詢(xún)分析腳本代碼實(shí)現(xiàn)
這篇文章主要介紹了python日志查詢(xún)分析腳本代碼的實(shí)現(xiàn),分為受控節(jié)點(diǎn)和主控節(jié)點(diǎn),大家參考使用吧2013-11-11

