Python 为什么我们要在pytorch中使用to()方法?
这种方法我已经见过很多次了。这样做的目的和好处是什么 为什么我们要在pytorch中使用to(device)方法 这是一种多用途的方法 不仅可以进行类型转换,还可以进行CPU到GPU张量移动和GPU到CPU张量移动: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")
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”)
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数组转换为张量(因为这很快)”,其他方法可能会慢一些。明白了。谢谢@普罗斯蒂