All input tensors must be on the same device
【摘要】 All input tensors must be on the same device
RuntimeError: All input tensors must be on the same device. Received cuda:0 and cpu #18
RuntimeError: All input tensors must be o...
All input tensors must be on the same device
RuntimeError: All input tensors must be on the same device. Received cuda:0 and cpu #18
RuntimeError: All input tensors must be on the same device. Received cuda:2 and cuda:0
pytorch在进行计算时,
张量必须在同一设备,都在cpu上,或者都在指定的gpu上,不同gpu之间也不能实时计算。
举例:
-
class DCRNN(torch.nn.Module):
-
def _set_hidden_state(self, X, H):
-
if H is None:
-
H = torch.zeros(X.shape[0], self.out_channels)
-
return H
这个例子中,H是新创建Tensor变量,如果X也为Tensor变量,分配gpu或者cpu后,H没有分配gpu或cpu资源
所以可能报错。
解决方法:
H.to(X.device)
当然,X也需要是tensor数据类型。
-
class DCRNN(torch.nn.Module):
-
def _set_hidden_state(self, X, H):
-
if H is None:
-
H = torch.zeros(X.shape[0], self.out_channels)
-
return H.to(X.device)
顺便提一下:
tensor.cuda()默认分配到第0块gpu上
分配第2块gpu卡:
tensor.cuda(2)
解决方法和文章是我自己耗费精力所做,如果解决了您的问题,麻烦点赞加个关注,更多干货知识与您第一时间分享!
文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/jacke121/article/details/115348963
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)