微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐