Я пытаюсь тренировать слой LSTM в pytorch. Я использую 4 графических процессора. При инициализации я добавил функцию .cuda() для перемещения скрытого слоя в графический процессор. Но когда я запускаю код с несколькими графическими процессорами, я получаю эту ошибку во время выполнения:
RuntimeError: Input and hidden tensors are not at the same device
Я попытался решить проблему с помощью функции .cuda() в функции forward, как показано ниже:
self.hidden = (self.hidden[0].type(torch.FloatTensor).cuda(), self.hidden[1].type(torch.FloatTensor).cuda())
Эта линия, кажется, решает проблему, но вызывает у меня беспокойство, если обновленный скрытый слой виден в разных графических процессорах. Должен ли я переместить вектор обратно в процессор в конце функции пересылки для пакета или есть какой-либо другой способ решения проблемы.