PyTorch使用GPU的方法


 

PyTorch可以指定用來存儲和計算的設備,如使用內存的CPU或者使用顯存的GPU。在默認情況下,PyTorch會將數據創建在內存,然后利用CPU來計算。

PyTorch要求計算的所有輸入數據都在內存或同一塊顯卡的顯存上。

 

檢測是否可以使用GPU,使用一個全局變量use_gpu,便於后面操作使用

use_gpu = torch.cuda.is_available()


可以使用GPU,use_gpu的值為True,否則為False。當可以使用GPU,我們不想使用,可以直接賦值use_gpu = False

我們在進行轉換時,需要把數據,網絡,與損失函數轉換到GPU上

1.構建網絡時,把網絡,與損失函數轉換到GPU上

    model = get_model()
    loss_f = t.nn.CrossEntropyLoss()
    if(use_gpu):
        model = model.cuda()
        loss_f = loss_f.cuda()

 
2.訓練網絡時,把數據轉換到GPU上

    if (use_gpu):
        x,y = x.cuda(),y.cuda()

 
3.取出數據時,需要從GPU准換到CPU上進行操作

    if(use_gpu):
        loss = loss.cpu()
        acc = acc.cpu()

 

 

法一:

    device=torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
    model=model.to(device)
    x=x.to(device)
    y=y.to(device)


法二:

    model=model.cuda()
    x=x.cuda()
    y=y.cuda()

 

list 列表 不能使用 .to(device)

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

 

self.device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

 

model = LSTM().to(device)
model.hidden_cell = (torch.zeros(1, 1, model.hidden_layer_size).to(device),
torch.zeros(1, 1, model.hidden_layer_size).to(device))
y_pred = model(seq.to(device))
single_loss = loss_function(y_pred, labels.to(device))


REF

https://discuss.pytorch.org/t/trying-to-train-lstm-on-gpu/47674

https://blog.csdn.net/yzy__zju/article/details/85014576

https://www.cnblogs.com/sdu20112013/p/12145857.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM