最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2024年09月09日 10:47:51   作者:Overboom  
在PyTorch中,保存和加載模型有兩種主要方式:直接保存整個模型結(jié)構(gòu)加權(quán)重,或者只保存模型的參數(shù),直接保存整個模型的方法簡單,但不夠靈活,且可能存在模型結(jié)構(gòu)不一致的風險,推薦的做法是只保存模型參數(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)造),然后對這個模型導入?yún)?shù)。雖然麻煩,但是可以同時保存多個模型的參數(shù),而第一種方法則不能,而且第一種方法有時不能保證模型的相同性(你讀取的模型并不是你想要的)。

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

2 GPU / CPU模型相互加載

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

pytorch 允許把在GPU上訓練的模型加載到CPU上,也允許把在CPU上訓練的模型加載到GPU上。

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

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

  • GPU訓練的模型,在GPU上使用;
  • CPU訓練的模型,在CPU上使用,

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

torch.load('model_dict.pth')

情況二:GPU -> CPG/GPU

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

import torch
from torchvision import models

# 加載預(yù)訓練的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上訓練的,但不確定要在CPU還是GPU上運行時,兩種情況都要考慮

import torch
from torchvision import models

# 加載預(yù)訓練的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)文章

  • 基于Python制作一個端午節(jié)相關(guān)的小游戲

    基于Python制作一個端午節(jié)相關(guān)的小游戲

    端午節(jié)快樂,今天我將為大家?guī)硪黄嘘P(guān)端午節(jié)的編程文章,希望能夠為大家獻上一份小小的驚喜,我們將會使用Python來實現(xiàn)一個與端午粽子相關(guān)的小應(yīng)用程序,在本文中,我將會介紹如何用Python代碼制做一個“粽子拆解器”,感興趣的小伙伴歡迎閱讀
    2023-06-06
  • 詳解python數(shù)據(jù)結(jié)構(gòu)之隊列Queue

    詳解python數(shù)據(jù)結(jié)構(gòu)之隊列Queue

    這篇文章主要介紹了python數(shù)據(jù)結(jié)構(gòu)之隊列Queue,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • 基于Python編寫詞云軟件并顯示分詞結(jié)果

    基于Python編寫詞云軟件并顯示分詞結(jié)果

    這篇文章主要為大家詳細介紹了如何基于Python編寫一個簡單的詞云制作軟件并顯示分詞結(jié)果,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解一下
    2023-10-10
  • Python基礎(chǔ)之logging模塊知識總結(jié)

    Python基礎(chǔ)之logging模塊知識總結(jié)

    用Python寫代碼的時候,在想看的地方寫個print xx 就能在控制臺上顯示打印信息,這樣子就能知道它是什么了,但是當我需要看大量的地方或者在一個文件中查看的時候,這時候print就不大方便了,所以Python引入了logging模塊來記錄我想要的信息,需要的朋友可以參考下
    2021-05-05
  • Python制作數(shù)據(jù)預(yù)測集成工具(值得收藏)

    Python制作數(shù)據(jù)預(yù)測集成工具(值得收藏)

    這篇文章主要介紹了Python如何制作數(shù)據(jù)預(yù)測集成工具,幫助大家進行大數(shù)據(jù)預(yù)測,感興趣的朋友可以了解下
    2020-08-08
  • python超簡單解決約瑟夫環(huán)問題

    python超簡單解決約瑟夫環(huán)問題

    這篇文章主要介紹了python超簡單解決約瑟夫環(huán)問題的方法,詳細描述的約瑟夫環(huán)問題的描述與Python解決方法,需要的朋友可以參考下
    2015-05-05
  • 基于并發(fā)服務(wù)器幾種實現(xiàn)方法(總結(jié))

    基于并發(fā)服務(wù)器幾種實現(xiàn)方法(總結(jié))

    下面小編就為大家分享一篇基于并發(fā)服務(wù)器幾種實現(xiàn)方法(總結(jié)),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • python實現(xiàn)層次聚類的方法

    python實現(xiàn)層次聚類的方法

    層次聚類就是一層一層的進行聚類,可以由上向下把大的類別(cluster)分割,叫作分裂法,這篇文章主要介紹了python實現(xiàn)層次聚類的方法,需要的朋友可以參考下
    2021-11-11
  • Python自然語言處理之切分算法詳解

    Python自然語言處理之切分算法詳解

    這篇文章主要介紹了Python自然語言處理之切分算法詳解,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Python 使用 MySQL 數(shù)據(jù)庫進行事務(wù)處理完整示例

    Python 使用 MySQL 數(shù)據(jù)庫進行事務(wù)處理完整示例

    本文介紹了Python中使用MySQL進行事務(wù)處理的基本概念和步驟,包括事務(wù)的核心概念(ACID原則)、事務(wù)處理代碼示例、關(guān)鍵操作解釋以及拓展場景,感興趣的朋友跟隨小編一起看看吧
    2026-01-01

最新評論

渑池县| 台南市| 定西市| 息烽县| 昌邑市| 洛浦县| 阿拉善右旗| 永和县| 昌乐县| 丰原市| 泰安市| 六盘水市| 元朗区| 饶平县| 即墨市| 四会市| 长武县| 玛沁县| 固原市| 甘肃省| 金秀| 永德县| 福泉市| 龙川县| 平南县| 尉氏县| 保定市| 阿坝县| 奉新县| 黄冈市| 开原市| 丹巴县| 明水县| 屯昌县| 大兴区| 恩施市| 游戏| 咸丰县| 堆龙德庆县| 五寨县| 邹城市|