pytorch在CPU和GPU上載入模型

2021-08-16 14:58:28 字數 1259 閱讀 1590

pytorch允許把在gpu上訓練的模型載入到cpu上,也允許把在cpu上訓練的模型載入到gpu上。

cpu->cpu,gpu->gpu

torch.load('gen_500000.pkl')
gpu->cpu

torch.load('gen_500000.pkl', map_location=lambda storage, loc: storage)
或:

torch.load('***.pkl', map_location='cpu')  # pytorch0.4.0及以上版本
cpu->gpu1

torch.load('gen_500000.pkl', map_location=lambda storage, loc: storage.cuda(1))
單機多gpu上訓練的模型載入

在gpu或cpu上載入乙個在多gpu上訓練的模型時,會報類似如下錯誤:

unexpected key(s) in state_dict: "module.pretrained.conv1.0.weight", "module.pretrained.conv1.1.weight"

這是因為在多gou上訓練的模型在儲存時候在引數名前多加了乙個「module.」字首,載入的時候把這個字首去掉就行了:

model = get_model(args.model)

device = torch.device('cpu')

# device = torch.device('cuda:0')

state_dict = torch.load('***.pth', map_location=device)

from collections import ordereddict

state_dict_new = ordereddict()

for k, v in state_dict.items():

name = k[7:]  # 去掉 `module.`

state_dict_new[name] = v

model.load_state_dict(state_dict_new)

model.eval() #eval 模式

Pytorch 比較CPU和GPU的運算速度

在跑神經網路的時候,gpu的作用是很明顯的。下面比較一下cpu跑和gpu跑的區別 先用cpu跑 import torch import time for i in range 1 10 start time time.time 返回當前語句執行時的時間點 單位秒 a torch.rand i 100...

CPU 和 GPU頻率設定

在嵌入式裝置中為了降低功耗防止晶元發熱,廠商一般預設都將cpu和gpu頻率為最小,為了提高效能,減少演算法耗時需要手動將cpu或者gpu頻率設到效能模式。echo performance sys devices system cpu cpu0 cpufreq scaling governor,一般c...

CPU和GPU的區別

cpu 即 處理器,解釋計算機指令以及處理計算機軟體中的資料 gpu即圖形處理器,專門處理和繪製圖形相關的硬體。gpu時專為執行複雜的數學和 集合計算而設計的,有了它,cpu就從圖形處理的任務中解放出來,可以執行其他更多的 系統任務。硬體加速 在計算機中把計算量非常大的工作非陪給專門的硬體處理,減輕...