Pytorch 学习笔记--to(device)的用法
生活随笔
收集整理的這篇文章主要介紹了
Pytorch 学习笔记--to(device)的用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在學習深度學習的時候,我們寫代碼經常會見到類似的代碼:
img = img.to(device=torch.device("cuda" if torch.cuda.is_available() else "cpu")) model = models.vgg16_bn(pretrained=True).to(device=torch.device("cuda" if torch.cuda.is_available() else "cpu"))也可以先定義device:
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") model = model.to(device) img = img.to(device)1. 那么段代碼到底有什么用呢?
????????這段代碼的意思就是將所有最開始讀取數據時的tensor變量copy一份到device所指定的GPU上去,之后的運算都在GPU上進行。
2. 你可能會問,為什么要在GPU上做運算呢?
? ? ? ??首先,在做高維特征運算的時候,采用GPU無疑是比用CPU效率更高,如果兩個數據中一個加了.cuda()或者.to(device),而另外一個沒有加,就會造成類型不匹配而報錯。
? ? ? ? tensor和numpy都是矩陣,前者能在GPU上運行,后者只能在CPU運行,所以要注意數據類型的轉換。
3. .cuda()和.to(device)的效果一樣嗎?為什么后者更好?
? ? ? ? 兩個方法都可以達到同樣的效果,在pytorch中,即使是有GPU的機器,它也不會自動使用GPU,而是需要在程序中顯示指定。調用model.cuda(),可以將模型加載到GPU上去。這種方法不被提倡,而建議使用model.to(device)的方式,這樣可以顯示指定需要使用的計算資源,特別是有多個GPU的情況下。
4. 如果你有多個GPU,那么可以參考以下代碼:
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")model = Model()if torch.cuda.device_count() > 1:model = nn.DataParallel(model,device_ids=[0,1,2])model.to(device)#本文為本人學習筆記,以上有部分內容轉載自網絡,若有侵權,請聯系刪除
總結
以上是生活随笔為你收集整理的Pytorch 学习笔记--to(device)的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上位机通信标准-OPC
- 下一篇: IntelliJ Idea如何查看所有的