溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Pytorch加載訓(xùn)練好的模型遇到error問(wèn)題怎么辦

發(fā)布時(shí)間:2021-08-04 10:26:42 來(lái)源:億速云 閱讀:118 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹了Pytorch加載訓(xùn)練好的模型遇到error問(wèn)題怎么辦,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

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ò)都保存下來(lái),然后在test文件中直接load一下不就好了?

Pytorch加載訓(xùn)練好的模型遇到error問(wèn)題怎么辦

就遭受了這樣的錯(cuò)誤??村e(cuò)了error信息,把‘Net'看成‘net'。報(bào)錯(cuò)沒(méi)有屬性‘net'?這個(gè)不是我自己寫(xiě)的變量名么?

-----------------瞎搗鼓1h后(呵呵呵)----------------

回頭看error,沒(méi)有屬性‘Net',Net???

Pytorch加載訓(xùn)練好的模型遇到error問(wèn)題怎么辦

我當(dāng)下明白過(guò)來(lái),應(yīng)該是test文件中沒(méi)有把它import進(jìn)來(lái),test中就沒(méi)有任何關(guān)于Net的信息。我直接把定義的Net復(fù)制進(jìn)了test.py,就順利加載了訓(xùn)練好的模型。

但是我也有一個(gè)疑問(wèn),我理解的把整個(gè)模型保存難道不是把它的結(jié)構(gòu)都保存下來(lái)了么?為什么還要再把這個(gè)網(wǎng)絡(luò)import一次?來(lái)自python、pytorch、面向?qū)ο缶幊倘卧“椎囊苫?,先存?zhèn)€疑,搞懂了再來(lái)回答。

接下來(lái)試試只保存網(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ù)

Pytorch加載訓(xùn)練好的模型遇到error問(wèn)題怎么辦

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

Pytorch加載訓(xùn)練好的模型遇到error問(wèn)題怎么辦

報(bào)錯(cuò)

Pytorch加載訓(xùn)練好的模型遇到error問(wèn)題怎么辦

想死。。。

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

Pytorch加載訓(xùn)練好的模型遇到error問(wèn)題怎么辦

print一下 net.state_dict和net.state_dict(),前者輸出的是網(wǎng)絡(luò)結(jié)構(gòu),后者才是網(wǎng)絡(luò)的參數(shù)。

試著回答之前的問(wèn)題,第二種保存模型的方法只保存了網(wǎng)絡(luò)的參數(shù)(包括卷積層和全連接層每次的weight,bias),所以再加載模型的時(shí)候需要先定義網(wǎng)絡(luò)無(wú)可厚非,就像訓(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ù)存疑,保持探究精神吧。。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Pytorch加載訓(xùn)練好的模型遇到error問(wèn)題怎么辦”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI