Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我们要在pytorch中使用to()方法?_Python_Pytorch - Fatal编程技术网

Python 为什么我们要在pytorch中使用to()方法?

Python 为什么我们要在pytorch中使用to()方法?,python,pytorch,Python,Pytorch,这种方法我已经见过很多次了。这样做的目的和好处是什么 为什么我们要在pytorch中使用to(device)方法 这是一种多用途的方法 不仅可以进行类型转换,还可以进行CPU到GPU张量移动和GPU到CPU张量移动: tensor = torch.randn(2, 2) print(tensor) tensor = tensor.to(torch.float64) print(tensor) #dtype=torch.float64 tensor = tensor.to("cuda")

这种方法我已经见过很多次了。这样做的目的和好处是什么

为什么我们要在pytorch中使用to(device)方法

这是一种多用途的方法

不仅可以进行类型转换,还可以进行CPU到GPU张量移动和GPU到CPU张量移动:

tensor = torch.randn(2, 2)  
print(tensor)
tensor = tensor.to(torch.float64) 
print(tensor) #dtype=torch.float64
tensor = tensor.to("cuda") 
print(tensor) #device='cuda:0', dtype=torch.float64)
tensor = tensor.to("cpu") 
print(tensor) #dtype=torch.float64
tensor = tensor.to(torch.float32) 
print(tensor) # won't print dtype=torch.float32 since it is by default
因为CPU和GPU是不同种类的存储器,所以它们必须有一种通信方式。 这就是为什么我们有
到(“cuda”)
,和
到(“cpu”)
,我们称之为张量

通常在加载训练数据集(图像)时:

  • 您可以从URL下载它们(如MNIST)
  • 打开包装
  • 将它们转换为numpy数组

  • 将numpy数组转换为张量(因为这很快)
  • 将他们移动到GPU进行培训。
    移动到(“cuda”)
您可以像这样创建张量并将其移动到GPU

torch.zeros(1000).to("cuda")
但有一个技巧,有时你甚至可以直接将它们加载到GPU而不影响CPU

torch.zeros(1000, device="gpu")
.to()
可用于将张量复制到任何可用设备(CPU、GPU):

x=torch.randn(3)
x_g0=x.to('cuda:0')
x_c=x.to('cpu')
它有别名
.cuda()
.cpu()


当将数据类型指定为Arment
时,to()
用作强制转换方法:

x_d=x.to(火炬双火炬)

它有一个名为alias的数据类型
.double()
.float()
.int()

你读过这篇文章了吗?如果是,你的问题是什么?快速添加。。。在引擎盖下,
type
to
方法执行相同的类型检查并在需要时进行转换,但是
to
方法可以使用其他参数。这非常有用。为什么首先要将未打包的数据转换为numpy数组,然后再转换为张量?为什么不直接转换成张量呢?我看到了可以直接将数组转换为张量的例子,所以不确定为什么不能直接转换为张量。“将numpy数组转换为张量(因为这很快)”,其他方法可能会慢一些。明白了。谢谢@普罗斯蒂