pytorch保存模型pth_浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
我們經常會看到后綴名為.pt, .pth, .pkl的pytorch模型文件,這幾種模型文件在格式上有什么區別嗎?
其實它們并不是在格式上有區別,只是后綴不同而已(僅此而已),在用torch.save()函數保存模型文件時,各人有不同的喜好,有些人喜歡用.pt后綴,有些人喜歡用.pth或.pkl.用相同的torch.save()語句保存出來的模型文件沒有什么不同。
在pytorch官方的文檔/代碼里,有用.pt的,也有用.pth的。一般慣例是使用.pth,但是官方文檔里貌似.pt更多,而且官方也不是很在意固定用一種。
模型保存與調用方式一:
保存:
torch.save(model.state_dict(), mymodel.pth)#只保存模型權重參數,不保存模型結構
調用:
model = My_model(*args, **kwargs) #這里需要重新模型結構,My_model
model.load_state_dict(torch.load(mymodel.pth))#這里根據模型結構,調用存儲的模型參數
model.eval()
模型保存與調用方式一:
保存:
torch.save(model, mymodel.pth)#保存整個model的狀態
調用:
model=torch.load(mymodel.pth)#這里已經不需要重構模型結構了,直接load就可以
model.eval()
補充知識:關于python 導入包 .pth文件
Python在遍歷已知的庫文件目錄過程中,如果見到一個.pth 文件,就會將文件中所記錄的路徑加入到 sys.path 設置中,于是 .pth 文件說指明的庫也就可以被 Python 運行環境找到了。
python中有一個.pth文件,該文件的用法是:
首先xxx.pth文件里面會書寫一些路徑,一行一個。
將xxx.pth文件放在特定位置,則可以讓python在加載模塊時,讀取xxx.pth中指定的路徑。
*******************************************
有時,在用import導入項目文件夾里自己寫的python文件時,常常說找不到該文件,這時可以將項目路徑添加到PYTHONPATH下。
暫時添加:
import sys
sys.path.append(項目路徑)
這種方法只會存在內存里,一旦退出python就沒有了
一勞永逸:
在 XXX/pythonXXX/site-packages/ (python 包安裝路徑) 下新建后綴為 .pth的文件,在其中加入你的項目路徑,比如
K:\Desktop\face_detect\DFace-win64-master\src
K:\Desktop\face_detect\DFace-win64-master\src\core
*******************************************
有時候我們正在修改或調試的程序會是一個庫,為修改方便,我們可能不大希望把它放到 site-packages 下面,而是更愿意把它保留在原始的工程目錄中,以方便 IDE 和版本控制工具進行管理。那么怎么能讓 Python 運行環境找到這個庫呢?
原理上, Python 運行環境查找庫文件時本質是對 sys.path 列表的遍歷,如果我們想給運行環境注冊新的類庫進來,
要么得用代碼給 sys.path 列表增加新路徑;
要么得調整 PYTHONPATH 環境變量;
要么就得把庫文件復制到已經在 sys.path 設置中的路徑中去(比如 site-packages 目錄);
這些方法都不夠方便。最簡單的辦法是用 .pth 文件來實現。Python 在遍歷已知的庫文件目錄過程中,如果見到一個 .pth 文件,就會將文件中所記錄的路徑加入到 sys.path 設置中,于是 .pth 文件說指明的庫也就可以被 Python 運行環境找到了。
其實,easy_install 所依賴的 egg 包安裝就是靠 site-packages 目錄下的 .pth 文件添加對 egg 包的引用實現的。所以修改對應的 .pth 文件內容,就可以實現對 egg 包的卸載。
以上這篇淺談pytorch 模型 .pt, .pth, .pkl的區別及模型保存方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。
時間: 2020-05-24
總結
以上是生活随笔為你收集整理的pytorch保存模型pth_浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 奋斗者
- 下一篇: tensorflow中squeeze与e