pytorch 什么时候需要在模型或张量上使用`.to(device)`?

kri*_*nab 5 python gpu pytorch tensor

我是 Pytorch 的新手,但它看起来很不错。我唯一的问题是什么时候使用tensor.to(device)or Module.nn.to(device)

我正在阅读有关此主题的文档,它表明此方法会将张量或模型移动到指定的设备。但是我不清楚这需要哪些操作,如果我不使用.to()正确的时间会出现什么样的错误?

例如,如果我只是创建一个张量,我想象张量存储在 CPU 可访问的内存中,直到我将张量移动到 GPU。一旦张量在 GPU 上,GPU 就会对该张量执行任何数学运算。

但是,我是否必须担心不小心将数据张量传输到 GPU 而没有将模型传输到 GPU?这只会给我带来直接的错误,还是会在幕后进行大量昂贵的数据传输。这个例子对我来说很容易测试,但我只是想知道它可能不那么明显的其他情况。

任何指导都会有所帮助。

Gar*_*ain 7

模型和数据必须在同一设备(CPU 或 GPU)上,模型才能处理数据。CPU 上的数据和 GPU 上的模型,反之亦然,将导致运行时错误。

如果可用,您可以将可变设备设置为 cuda,否则将设置为 cpu,然后将数据和模型传输到设备

import torch

device = 'cuda' if torch.cuda.is_available() else 'cpu'
model.to(device)
data = data.to(device)
Run Code Online (Sandbox Code Playgroud)

  • 不需要,它将自动在 GPU 上创建。 (4认同)