解決Pytorch 加載訓(xùn)練好的模型 遇到的error問題
這是一個(gè)非常愚蠢的錯(cuò)誤
debug的時(shí)候要好好看error信息
提醒自己切記好好對(duì)待error!切記!切記!
-----------------------分割線----------------
pytorch 已經(jīng)非常友好了 保存模型和加載模型都只需要一條簡(jiǎn)單的命令
#保存整個(gè)網(wǎng)絡(luò)和參數(shù)
torch.save(your_net, 'save_name.pkl')
#加載保存的模型
net = torch.load('save_name.pkl')
因?yàn)槲冶容^懶我就想直接把整個(gè)網(wǎng)絡(luò)都保存下來,然后在test文件中直接load一下不就好了?

就遭受了這樣的錯(cuò)誤??村e(cuò)了error信息,把‘Net'看成‘net'。報(bào)錯(cuò)沒有屬性‘net'?這個(gè)不是我自己寫的變量名么?
-----------------瞎搗鼓1h后(呵呵呵)----------------
回頭看error,沒有屬性‘Net',Net???

我當(dāng)下明白過來,應(yīng)該是test文件中沒有把它import進(jìn)來,test中就沒有任何關(guān)于Net的信息。我直接把定義的Net復(fù)制進(jìn)了test.py,就順利加載了訓(xùn)練好的模型。
但是我也有一個(gè)疑問,我理解的把整個(gè)模型保存難道不是把它的結(jié)構(gòu)都保存下來了么?為什么還要再把這個(gè)網(wǎng)絡(luò)import一次?來自python、pytorch、面向?qū)ο缶幊倘卧“椎囊苫?,先存?zhèn)€疑,搞懂了再來回答。
接下來試試只保存網(wǎng)絡(luò)參數(shù)
#只保存網(wǎng)絡(luò)參數(shù)
torch.save(your_net.state_dict(), 'save_name.pkl')
#加載保存的模型
net.load_state_dict(torch.load('save_name.pkl'))
保存網(wǎng)絡(luò)參數(shù)

重新定義網(wǎng)絡(luò)

報(bào)錯(cuò)

想死。。。
仔細(xì)看了報(bào)錯(cuò)信息,以我小白的理解,我感覺保存下來的可能只是單純的數(shù)據(jù),而不是一個(gè)對(duì)象(沒有方法可以操作),或者該對(duì)象沒有.copy()方法,所以沒有辦法進(jìn)行.copy(),那肯定是保存哪里出錯(cuò)了。然后發(fā)現(xiàn)保存部分代碼寫錯(cuò)了,改成

print一下 net.state_dict和net.state_dict(),前者輸出的是網(wǎng)絡(luò)結(jié)構(gòu),后者才是網(wǎng)絡(luò)的參數(shù)。
試著回答之前的問題,第二種保存模型的方法只保存了網(wǎng)絡(luò)的參數(shù)(包括卷積層和全連接層每次的weight,bias),所以再加載模型的時(shí)候需要先定義網(wǎng)絡(luò)無可厚非,就像訓(xùn)練時(shí)候定義網(wǎng)絡(luò)那樣定義就可以;而第一種保存整個(gè)網(wǎng)絡(luò)的方法,保存了一個(gè)網(wǎng)絡(luò)的實(shí)例(包括它的所有結(jié)構(gòu)和參數(shù)),net是Net的一個(gè)實(shí)例,那為什么還要有Class Net的定義呢,還是回答不了。。
那就繼續(xù)存疑,保持探究精神吧。。
以上這篇解決Pytorch 加載訓(xùn)練好的模型 遇到的error問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
tensorflow 1.X遷移至tensorflow2 的代碼寫法
本文主要介紹了tensorflow 1.X遷移至tensorflow2 的代碼寫法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
python3實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲之BeautifulSoup使用詳解
這篇文章主要介紹了python3實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲之BeautifulSoup使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12
Numpy創(chuàng)建數(shù)組和隨機(jī)數(shù)組的方法小結(jié)
這篇文章主要為大家詳細(xì)介紹了Numpy創(chuàng)建數(shù)組和隨機(jī)數(shù)組的方法小結(jié),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,具有一定的參考價(jià)值,需要的可以參考一下2023-11-11
python網(wǎng)絡(luò)爬蟲之如何偽裝逃過反爬蟲程序的方法
本篇文章主要介紹了python網(wǎng)絡(luò)爬蟲之如何偽裝逃過反爬蟲程序的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
Python pydotplus安裝及可視化圖形創(chuàng)建教程
這篇文章主要為大家介紹了Python pydotplus安裝及可視化圖形創(chuàng)建教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Django中和時(shí)區(qū)相關(guān)的安全問題詳解
這篇文章主要給大家介紹了關(guān)于Django中和時(shí)區(qū)相關(guān)的安全問題的相關(guān)資料,需要的朋友可以參考下2020-10-10
python 密碼學(xué)示例——?jiǎng)P撒密碼的實(shí)現(xiàn)
這篇文章主要介紹了python 密碼學(xué)示例——?jiǎng)P撒密碼的實(shí)現(xiàn),幫助大家更好的利用python處理密碼,感興趣的朋友可以了解下2020-09-09

