溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

pytorch中model=model.to怎么用

發(fā)布時(shí)間:2021-05-25 14:14:00 來源:億速云 閱讀:281 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)pytorch中model=model.to怎么用的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

這代表將模型加載到指定設(shè)備上。

其中,device=torch.device("cpu")代表的使用cpu,而device=torch.device("cuda")則代表的使用GPU。

當(dāng)我們指定了設(shè)備之后,就需要將模型加載到相應(yīng)設(shè)備中,此時(shí)需要使用model=model.to(device),將模型加載到相應(yīng)的設(shè)備中。

將由GPU保存的模型加載到CPU上。

將torch.load()函數(shù)中的map_location參數(shù)設(shè)置為torch.device('cpu')

device = torch.device('cpu')
model = TheModelClass(*args, **kwargs)
model.load_state_dict(torch.load(PATH, map_location=device))

將由GPU保存的模型加載到GPU上。確保對輸入的tensors調(diào)用input = input.to(device)方法。

device = torch.device("cuda")
model = TheModelClass(*args, **kwargs)
model.load_state_dict(torch.load(PATH))
model.to(device)

將由CPU保存的模型加載到GPU上。

確保對輸入的tensors調(diào)用input = input.to(device)方法。map_location是將模型加載到GPU上,model.to(torch.device('cuda'))是將模型參數(shù)加載為CUDA的tensor。

最后保證使用.to(torch.device('cuda'))方法將需要使用的參數(shù)放入CUDA。

device = torch.device("cuda")
model = TheModelClass(*args, **kwargs)
model.load_state_dict(torch.load(PATH, map_location="cuda:0"))  # Choose whatever GPU device number you want
model.to(device)

補(bǔ)充:pytorch中model.to(device)和map_location=device的區(qū)別

一、簡介

在已訓(xùn)練并保存在CPU上的GPU上加載模型時(shí),加載模型時(shí)經(jīng)常由于訓(xùn)練和保存模型時(shí)設(shè)備不同出現(xiàn)讀取模型時(shí)出現(xiàn)錯誤,在對跨設(shè)備的模型讀取時(shí)候涉及到兩個參數(shù)的使用,分別是model.to(device)和map_location=devicel兩個參數(shù),簡介一下兩者的不同。

將map_location函數(shù)中的參數(shù)設(shè)置 torch.load()為 cuda:device_id。這會將模型加載到給定的GPU設(shè)備。

調(diào)用model.to(torch.device('cuda'))將模型的參數(shù)張量轉(zhuǎn)換為CUDA張量,無論在cpu上訓(xùn)練還是gpu上訓(xùn)練,保存的模型參數(shù)都是參數(shù)張量不是cuda張量,因此,cpu設(shè)備上不需要使用torch.to(torch.device("cpu"))。

二、實(shí)例

了解了兩者代表的意義,以下介紹兩者的使用。

1、保存在GPU上,在CPU上加載

保存:

torch.save(model.state_dict(), PATH)

加載:

device = torch.device('cpu')
model = TheModelClass(*args, **kwargs)
model.load_state_dict(torch.load(PATH, map_location=device))

解釋:

在使用GPU訓(xùn)練的CPU上加載模型時(shí),請傳遞 torch.device('cpu')給map_location函數(shù)中的 torch.load()參數(shù),使用map_location參數(shù)將張量下面的存儲器動態(tài)地重新映射到CPU設(shè)備 。

2、保存在GPU上,在GPU上加載

保存:

torch.save(model.state_dict(), PATH)

加載:

device = torch.device("cuda")
model = TheModelClass(*args, **kwargs)
model.load_state_dict(torch.load(PATH))
model.to(device)
# Make sure to call input = input.to(device) on any input tensors that you feed to the model

解釋:

在GPU上訓(xùn)練并保存在GPU上的模型時(shí),只需將初始化model模型轉(zhuǎn)換為CUDA優(yōu)化模型即可model.to(torch.device('cuda'))。

此外,請務(wù)必.to(torch.device('cuda'))在所有模型輸入上使用該 功能來準(zhǔn)備模型的數(shù)據(jù)。

請注意,調(diào)用my_tensor.to(device) 返回my_tensorGPU上的新副本。

它不會覆蓋 my_tensor。

因此,請記住手動覆蓋張量: my_tensor = my_tensor.to(torch.device('cuda'))

3、保存在CPU,在GPU上加載

保存:

torch.save(model.state_dict(), PATH)

加載:

device = torch.device("cuda")
model = TheModelClass(*args, **kwargs)
model.load_state_dict(torch.load(PATH, map_location="cuda:0"))  # Choose whatever GPU device number you want
model.to(device)
# Make sure to call input = input.to(device) on any input tensors that you feed to the model

解釋:

在已訓(xùn)練并保存在CPU上的GPU上加載模型時(shí),請將map_location函數(shù)中的參數(shù)設(shè)置 torch.load()為 cuda:device_id。

這會將模型加載到給定的GPU設(shè)備。

接下來,請務(wù)必調(diào)用model.to(torch.device('cuda'))將模型的參數(shù)張量轉(zhuǎn)換為CUDA張量。

最后,確保.to(torch.device('cuda'))在所有模型輸入上使用該 函數(shù)來為CUDA優(yōu)化模型準(zhǔn)備數(shù)據(jù)。

請注意,調(diào)用 my_tensor.to(device)返回my_tensorGPU上的新副本。

它不會覆蓋my_tensor。

因此,請記住手動覆蓋張量:my_tensor = my_tensor.to(torch.device('cuda'))

pytorch的優(yōu)點(diǎn)

1.PyTorch是相當(dāng)簡潔且高效快速的框架;2.設(shè)計(jì)追求最少的封裝;3.設(shè)計(jì)符合人類思維,它讓用戶盡可能地專注于實(shí)現(xiàn)自己的想法;4.與google的Tensorflow類似,F(xiàn)AIR的支持足以確保PyTorch獲得持續(xù)的開發(fā)更新;5.PyTorch作者親自維護(hù)的論壇 供用戶交流和求教問題6.入門簡單

感謝各位的閱讀!關(guān)于“pytorch中model=model.to怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI