Pytorch如何加載部分權(quán)重
1.修改網(wǎng)絡(luò)層輸出
比如在人臉檢測項目中,已經(jīng)訓(xùn)練好人臉框的回歸,但是此時需要再加入人臉關(guān)鍵點。
為了節(jié)約大量時間,我們可以加載部分權(quán)重。加載的網(wǎng)絡(luò)權(quán)重
if os.path.exists(self.load_params): pretext_model = torch.load(self.load_params)
打印出來,會看到網(wǎng)絡(luò)權(quán)重存儲在一個字典中,需要修改哪一層,用字典的鍵索引值進(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ù),也是存放在一個字典中
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í)
有時我們也會用別人的模型,加載與訓(xùn)練參數(shù),但是需要對輸出層做一些修改,一般有兩種方法,直接修改輸出層個數(shù)或增加網(wǎng)絡(luò)層
修改輸出層個數(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分類
增加輸出網(wǎng)絡(luò)層
num_fc_ftr = net.classifier[6] net.fc = nn.Linear(num_fc_ftr, 128) net.out = nn.Linear(128, 10)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Selenium如何實現(xiàn)獲取cookies并保存
這篇文章主要為大家詳細(xì)介紹了Selenium如何實現(xiàn)獲取cookies保存起來用于下次訪問,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-05-05Opencv圖像添加椒鹽噪聲、高斯濾波去除噪聲原理以及手寫Python代碼實現(xiàn)方法
椒鹽噪聲的特征非常明顯,為圖像上有黑色和白色的點,下面這篇文章主要給大家介紹了關(guān)于Opencv圖像添加椒鹽噪聲、高斯濾波去除噪聲原理以及手寫Python代碼實現(xiàn)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09基于Python編寫PDF轉(zhuǎn)EPUB以及MOBI工具
當(dāng)我們需要在電子閱讀器上閱讀這些文檔時,轉(zhuǎn)換為EPUB或MOBI格式會提供更好的閱讀體驗,所以本文將使用Python編寫一個PDF轉(zhuǎn)EPUB以及MOBI工具,需要的可以參考下2025-03-03django 數(shù)據(jù)庫 get_or_create函數(shù)返回值是tuple的問題
這篇文章主要介紹了django 數(shù)據(jù)庫 get_or_create函數(shù)返回值是tuple的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python報錯error: subprocess-exited-with-error解決辦法
在Python開發(fā)中,遇到subprocess-exited-with-error通常是由依賴缺失、權(quán)限問題、環(huán)境配置錯誤或兼容性問題導(dǎo)致,修復(fù)方法包括安裝依賴、使用虛擬環(huán)境、提升權(quán)限、檢查路徑和命令,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-10-10Python3爬蟲學(xué)習(xí)之爬蟲利器Beautiful Soup用法分析
這篇文章主要介紹了Python3爬蟲學(xué)習(xí)之爬蟲利器Beautiful Soup用法,結(jié)合實例形式分析了Beautiful Soup的功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2018-12-12Python使用cx_Oracle調(diào)用Oracle存儲過程的方法示例
這篇文章主要介紹了Python使用cx_Oracle調(diào)用Oracle存儲過程的方法,結(jié)合具體實例分析了Python中通過cx_Oracle調(diào)用PL/SQL的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-10-10