Ошибка «Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu» в PyTorch может возникать по нескольким причинам:
- Модель и данные находятся на разных устройствах. 4 Например, модель отправлена на устройство GPU, а данные — на CPU. 4
- При применении преобразований не задан аргумент устройства. 1 По умолчанию этот аргумент равен None, поэтому его нужно явно установить. 1
- Инициализация оптимизатора до перемещения модели на GPU. 3 В этом случае переменная устройства будет неопределённой, и оптимизатор примет значение по умолчанию — CPU. 3
Чтобы исправить ошибку, нужно убедиться, что все тензоры находятся на одном и том же устройстве. 5 Для этого можно вызвать метод .to(device) для тензоров. 1