在 PyTorch 中,以下两种将张量(或模型)发送到 GPU 的方法有什么区别:
Setup:
X = np.array([[1, 3, 2, 3], [2, 3, 5, 6], [1, 2, 3, 4]]) # X = model()
X = torch.DoubleTensor(X)
Method 1 |
Method 2 |
X.cuda() |
device = torch.device("cuda:0")
X = X.to(device)
|
(我真的不需要详细解释后端发生的事情,只是想知道它们是否本质上都在做同样的事情)
两者没有区别。
早期版本的 pytorch 有.cuda()
and .cpu()
将张量和模型从 CPU 移动到 GPU 并返回的方法。然而,这使得代码编写有点麻烦:
if cuda_available:
x = x.cuda()
model.cuda()
else:
x = x.cpu()
model.cpu()
后续版本推出.to()
基本上以一种优雅的方式处理一切:
device = torch.device('cuda') if cuda_available else torch.device('cpu')
x = x.to(device)
model = model.to(device)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)