欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pytorch GPU和CPU模型相互加載方式

 更新時間:2024年09月09日 10:47:51   作者:Overboom  
在PyTorch中,保存和加載模型有兩種主要方式:直接保存整個模型結(jié)構(gòu)加權(quán)重,或者只保存模型的參數(shù),直接保存整個模型的方法簡單,但不夠靈活,且可能存在模型結(jié)構(gòu)不一致的風(fēng)險,推薦的做法是只保存模型參數(shù),這種方法需要在加載前定義與原模型結(jié)構(gòu)相同的模型

1 pytorch保存模型的兩種方式

1.1 直接保存模型并讀取

# 創(chuàng)建你的模型實例對象: model
model = net()
## 保存模型
torch.save(model, 'model_name.pth')

## 讀取模型
model = torch.load('model_name.pth')

1.2 只保存模型中的參數(shù)并讀取

## 保存模型
torch.save({'model': model.state_dict()}, 'model_name.pth')

## 讀取模型
model = net()
state_dict = torch.load('model_name.pth')
model.load_state_dict(state_dict['model'])
  • 第一種方法可以直接保存模型,加載模型的時候直接把讀取的模型給一個參數(shù)就行。
  • 第二種方法則只是保存參數(shù),在讀取模型參數(shù)前要先定義一個模型(模型必須與原模型相同的構(gòu)造),然后對這個模型導(dǎo)入?yún)?shù)。雖然麻煩,但是可以同時保存多個模型的參數(shù),而第一種方法則不能,而且第一種方法有時不能保證模型的相同性(你讀取的模型并不是你想要的)。

如何保存模型決定了如何讀取模型,一般來選擇第二種來保存和讀取。

2 GPU / CPU模型相互加載

2.1 單個CPU和單個GPU模型加載

pytorch 允許把在GPU上訓(xùn)練的模型加載到CPU上,也允許把在CPU上訓(xùn)練的模型加載到GPU上。

加載模型參數(shù)的時候,在GPU和CPU訓(xùn)練的模型是不一樣的,這兩種模型是不能混為一談的,下面分情況進行操作說明。

情況一:CPU -> CPU, GPU -> GPU

  • GPU訓(xùn)練的模型,在GPU上使用;
  • CPU訓(xùn)練的模型,在CPU上使用,

這種情況下我們都只用直接用下面的語句即可:

torch.load('model_dict.pth')

情況二:GPU -> CPG/GPU

GPU訓(xùn)練的模型,不知道放在CPU還是GPU運行,兩種情況都要考慮

import torch
from torchvision import models

# 加載預(yù)訓(xùn)練的GPU模型權(quán)重文件
weights_path = 'model_gpu.pth'

# 定義一個與原模型結(jié)構(gòu)相同的新模型
model = models.resnet50()

# 檢查是否有可用的CUDA設(shè)備
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

# 將權(quán)重映射到相應(yīng)的設(shè)備內(nèi)存并加載到模型中
weights = torch.load(weights_path, map_location=device)
model.load_state_dict(weights)

# 設(shè)置為評估模式
model.eval()

print("Model is successfully loaded and can be used on a", device.type, "!")

情況三:CPU -> CPG/GPU

模型是在CPU上訓(xùn)練的,但不確定要在CPU還是GPU上運行時,兩種情況都要考慮

import torch
from torchvision import models

# 加載預(yù)訓(xùn)練的CPU模型權(quán)重文件
weights_path = 'model_cpu.pth'

# 定義一個與原模型結(jié)構(gòu)相同的新模型
model = models.resnet50()

# 檢查是否有可用的CUDA設(shè)備
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

# 將權(quán)重映射到相應(yīng)的設(shè)備內(nèi)存并加載到模型中
if device.type == 'cuda':
    model.to(device)
    weights = torch.load(weights_path, map_location=device)
else:
    weights = torch.load(weights_path, map_location='cpu')

model.load_state_dict(weights)

# 設(shè)置為評估模式
model.eval()

print("Model is successfully loaded and can be used on a", device.type, "!")

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用pyinstaller將py文件打包為exe的方法

    利用pyinstaller將py文件打包為exe的方法

    本篇文章主要介紹了利用pyinstaller將py文件打包為exe的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • python缺失值的解決方法總結(jié)

    python缺失值的解決方法總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于python缺失值的解決方法總結(jié),有需要的朋友們可以跟著學(xué)習(xí)下。
    2021-06-06
  • 從零學(xué)Python之hello world

    從零學(xué)Python之hello world

    從今天開始講陸續(xù)發(fā)布一系列python基礎(chǔ)教程,讓新手更快更好的入門。
    2014-05-05
  • 詳解用python -m http.server搭一個簡易的本地局域網(wǎng)

    詳解用python -m http.server搭一個簡易的本地局域網(wǎng)

    這篇文章主要介紹了詳解用python -m http.server搭一個簡易的本地局域網(wǎng),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python FTP操作類代碼分享

    Python FTP操作類代碼分享

    這篇文章主要介紹了Python FTP操作類,實現(xiàn)自動下載、自動上傳,并可以遞歸目錄操作,需要的朋友可以參考下
    2014-05-05
  • python裝飾器實例大詳解

    python裝飾器實例大詳解

    這篇文章主要介紹了python裝飾器實例大詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-10-10
  • 用selenium解決滑塊驗證碼的實現(xiàn)步驟

    用selenium解決滑塊驗證碼的實現(xiàn)步驟

    驗證碼作為一種自然人的機器人的判別工具,被廣泛的用于各種防止程序做自動化的場景中,下面這篇文章主要給大家介紹了關(guān)于用selenium解決滑塊驗證碼的實現(xiàn)步驟,需要的朋友可以參考下
    2023-02-02
  • Python利用卡方Chi特征檢驗實現(xiàn)提取關(guān)鍵文本特征

    Python利用卡方Chi特征檢驗實現(xiàn)提取關(guān)鍵文本特征

    卡方檢驗最基本的思想就是通過觀察實際值與理論值的偏差來確定理論的正確與否。本文將利用卡方Chi特征檢驗實現(xiàn)提取關(guān)鍵文本特征功能,感興趣的可以了解一下
    2022-12-12
  • Pygame實現(xiàn)簡易版趣味小游戲之反彈球

    Pygame實現(xiàn)簡易版趣味小游戲之反彈球

    這篇文章主要為大家詳細介紹了python實現(xiàn)簡易版趣味反彈球游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • python linecache讀取行更新的實現(xiàn)

    python linecache讀取行更新的實現(xiàn)

    本文主要介紹了python linecache讀取行更新的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評論