看到这个报错我就想,是不是只要涉及到Tensor的地方,都要带一个 to(device),此处的device指的是cuda
于是我找到对应的没有采用 to(device) 的但涉及到 tensor 的代码,将以下部分:
actions_v.unsqueeze(-1).type(torch.LongTensor)
改成了:
actions_v.unsqueeze(-1).type(torch.LongTensor).to(device)
重新运行代码,果然不再报错了。
报错的本意就是:希望所有的tensor都在同一个设备上,而不是一会cpu,一会儿gpu
本文介绍了在处理Tensor时遇到的设备不一致错误,强调了所有Tensor操作应当在同一设备上进行。通过将代码中的LongTensor转换并附加.to(device)方法,确保了所有张量在GPU(cuda)上运行,从而消除了报错。理解并正确使用.to(device)对于高效利用GPU资源至关重要。
4万+

被折叠的 条评论
为什么被折叠?



