【发布时间】:2022-11-11 00:23:28
【问题描述】:
我最近发现了一件奇怪的事情。据我所知,当你想对两个张量做一些操作时,你应该确保它们在同一个设备上。但是当我这样编写代码时,它会意外运行
import torch
a = torch.tensor(1, device='cuda')
print(a.device)
b = torch.tensor(2, device='cpu')
print(b.device)
torch(a+b)
cuda:0
cpu
tensor(3, device='cuda:0')
它不能像这样在我的代码中工作:
pts_1_tile = torch.tensor([[0], [0]], dtype=torch.float32)
torch.add(pred_4pt_shift, pts_1_tile)
这里pred_4pt_shift是一个子网的中间结果,它是GPU上的一个张量。
我的问题是为什么第一个代码可以工作但第二个代码报告这个不同的设备错误?
【问题讨论】:
-
在这里,您应该删除火炬:a + b