如何直接在GPU上创建张量,还是在另一个张量的设备上创建张量?



我发现了关于这个的讨论,其中代码

if std.is_cuda:
eps = torch.FloatTensor(std.size()).cuda().normal_()
else:
eps = torch.FloatTensor(std.size()).normal_()

变成了好的

eps = std.new().normal_()

但是这里说

new()方法已弃用。


  1. 如何在特定设备上直接创建一个新的张量?
  2. 如何在相同的设备上创建一个新的张量,就像另一个张量一样,没有丑陋的if?

我认为文档现在已经很清楚了。这里描述了创建新张量的4种主要方法,你只需要指定在gpu上创建它的设备:

t1 = torch.zeros((3,3), device=torch.device('cuda'))
t2 = torch.ones_like(t1, device=torch.device('cuda'))
t3 = torch.randn((3,5), device=torch.device('cuda'))

这个链接增加了关于torch.tensor()构造器的更多信息。同样,设备是一个要指定的参数。

如果你想使用另一个张量的设备,你可以使用tensor.device:

t4 = torch.empty((2,2), device=t3.device)
torch.ones_like(std).normal_()

ones_like的参数之一是device,(来自文档)说:

device (torch.device,可选)-返回张量的期望设备。默认值:如果为None,则默认为输入

的设备

也可以使用torch.zeros_like

相关内容

  • 没有找到相关文章

最新更新