歡迎您光臨本站 註冊首頁

淺談pytorch 模型 .pt, .pth, .pkl的區別及模型保存方式

←手機掃碼閱讀     wooen @ 2020-06-08 , reply:0

我們經常會看到後綴名為.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:Desktopface_detectDFace-win64-mastersrc
 K:Desktopface_detectDFace-win64-mastersrccore
 

*******************************************

有時候我們正在修改或調試的程序會是一個庫,為修改方便,我們可能不大希望把它放到 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 包的卸載。

   


[wooen ] 淺談pytorch 模型 .pt, .pth, .pkl的區別及模型保存方式已經有1313次圍觀

http://coctec.com/docs/python/shhow-post-237490.html