All input tensors must be on the same device

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-17 04:09   16   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 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)

解决方法和文章是我自己耗费精力所做,如果解决了您的问题,麻烦点赞加个关注,更多干货知识与您第一时间分享!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP