神經網絡一般用GPU來跑,我們的神經網絡框架一般也都安裝的GPU版本,本文就簡單記錄一下GPU使用的編寫。
GPU的設置不在model,而是在Train的初始化上。
第一步是查看是否可以使用GPU
self.GPU_IN_USE = torch.cuda.is_available()
就是返回這個可不可以用GPU的函數,當你的pytorch是cpu版本的時候,他就會返回False。
然后是:
self.device = torch.device('cuda' if self.GPU_IN_USE else 'cpu')
torch.device是代表將torch.tensor分配到哪個設備的函數
接著是,我看到了一篇文章,原來就是將網絡啊、數據啊、隨機種子啊、損失函數啊、等等等等直接轉移到CUDA上就好了!
于是下面就好理解多了:
轉移模型:
self.model = Net(num_channels=1, upscale_factor=self.upscale_factor, base_channel=64, num_residuals=4).to(self.device)
設置cuda的隨機種子:
torch.cuda.manual_seed(self.seed)
轉移損失函數:
轉移數據:
data, target = data.to(self.device), target.to(self.device)
pytorch 網絡定義參數的后面無法加.cuda()
pytorch定義網絡__init__()的時候,參數不能加“cuda()", 不然參數不包含在state_dict()中,比如下面這種寫法是錯誤的
self.W1 = nn.Parameter(torch.FloatTensor(3,3), requires_grad=True).cuda()
應該去掉".cuda()"
self.W1 = nn.Parameter(torch.FloatTensor(3,3), requires_grad=True)
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:- pytorch 如何用cuda處理數據
- pytorch model.cuda()花費時間很長的解決
- pytorch中.to(device) 和.cuda()的區別說明
- PyTorch CUDA環境配置及安裝的步驟(圖文教程)
- Linux安裝Pytorch1.8GPU(CUDA11.1)的實現