相关疑难解决方法(0)

在多个GPU上运行LSTM会得到“输入张量和隐藏张量不在同一设备上”

我正在尝试在pytorch中训练LSTM层。我正在使用4个GPU。初始化时,我添加了.cuda()函数将隐藏层移动到GPU。但是,当我使用多个GPU运行代码时,出现此运行时错误:

RuntimeError: Input and hidden tensors are not at the same device
Run Code Online (Sandbox Code Playgroud)

我试图通过在以下正向函数中使用.cuda()函数来解决此问题:

self.hidden = (self.hidden[0].type(torch.FloatTensor).cuda(), self.hidden[1].type(torch.FloatTensor).cuda()) 
Run Code Online (Sandbox Code Playgroud)

这条线似乎可以解决问题,但令我担心的是,是否在不同的GPU中看到了更新的隐藏层。我应该将向量在前进功能的末尾移回cpu进行批处理,还是有其他解决方法?

python gpu lstm pytorch

13
推荐指数
1
解决办法
908
查看次数

标签 统计

gpu ×1

lstm ×1

python ×1

pytorch ×1