All input tensors must be on the same device

举报
风吹稻花香 发表于 2021/06/04 22:48:07 2021/06/04
【摘要】 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之间也不能实时计算。

举例:


  
  1. class DCRNN(torch.nn.Module):
  2. def _set_hidden_state(self, X, H):
  3. if H is None:
  4. H = torch.zeros(X.shape[0], self.out_channels)
  5. return H

这个例子中,H是新创建Tensor变量,如果X也为Tensor变量,分配gpu或者cpu后,H没有分配gpu或cpu资源

所以可能报错。

 

解决方法:

H.to(X.device)

 

当然,X也需要是tensor数据类型。


  
  1. class DCRNN(torch.nn.Module):
  2. def _set_hidden_state(self, X, H):
  3. if H is None:
  4. H = torch.zeros(X.shape[0], self.out_channels)
  5. 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。