1. 程式人生 > 程式設計 >淺談pytorch 模型 .pt, .pth, .pkl的區別及模型儲存方式

淺談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,.pkl的區別及模型儲存方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。