【发布时间】:2020-11-13 14:58:01
【问题描述】:
我是 Pytorch 的新手,但它看起来很不错。我唯一的问题是何时使用tensor.to(device) 或Module.nn.to(device)。
我正在阅读有关此主题的documentation,它表明此方法会将张量或模型移动到指定的设备。但是我并不清楚这需要哪些操作,如果我没有在正确的时间使用.to()会出现什么样的错误?
例如,如果我只是创建一个张量,我认为该张量存储在 CPU 可访问内存中,直到我将张量移至 GPU。一旦张量在 GPU 上,GPU 就会对该张量执行任何数学运算。
但是,我是否必须担心不小心将数据张量传输到 GPU 而没有将模型传输到 GPU?这只会给我直接的错误,还是会在幕后进行大量昂贵的数据传输。这个例子对我来说很容易测试,但我只是想知道它可能不那么明显的其他情况。
任何指导都会有所帮助。
【问题讨论】:
-
如果一个张量在 GPU 上,另一个在 CPU 上进行操作,你会收到一个
Runtime Error: Expected object of device type cuda but got device type cpu in Pytorch,这很清楚。 -
@Berriel 是的,这是有道理的。现在我知道如果它弹出来如何解释这个消息。谢谢你的提示。我只是担心系统没有出现故障,结果我遇到了一些非常慢的训练循环或其他难以诊断的问题。再次感谢。