All input tensors must be on the same device

举报
风吹稻花香 发表于 2021/06/04 22:48:07 2021/06/04
6.7k+ 0 0
【摘要】 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

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

    全部回复

    上滑加载中

    设置昵称

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

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

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