Процессор только pytorch аварийно завершает работу с ошибкой AssertionError: Torch не скомпилирован с включенным CUDA

#python #machine-learning #pytorch #python-3.7 #torchvision

Вопрос:

Я пытаюсь запустить код из этого репозитория, и мне нужно использовать Pytorch 1.4.0. Я установил версию pytorch только для процессора pip install torch==1.4.0 cpu torchvision==0.5.0 cpu -f https://download.pytorch.org/whl/torch_stable.html .

Я запустил программу, выполнив py -m train_Kfold_CV --device 0 --fold_id 10 --np_data_dir "C:UsersusernameOneDriveDesktopemadeldeenAttnSleepprepare_datasetsedf_20_npz" , но я получаю эту ошибку:

   File "C:UsersusernameAppDataLocalProgramsPythonPython37librunpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:UsersusernameAppDataLocalProgramsPythonPython37librunpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:UsersusernameOneDriveDesktopemadeldeenAttnSleeptrain_Kfold_CV.py", line 94, in <module>
    main(config, fold_id)
  File "C:UsersusernameOneDriveDesktopemadeldeenAttnSleeptrain_Kfold_CV.py", line 65, in main
    trainer.train()
  File "C:UsersusernameOneDriveDesktopemadeldeenAttnSleepbasebase_trainer.py", line 66, in train
    result, epoch_outs, epoch_trgs = self._train_epoch(epoch, self.epochs)
  File "C:UsersusernameOneDriveDesktopemadeldeenAttnSleeptrainertrainer.py", line 49, in _train_epoch
    loss = self.criterion(output, target, self.class_weights)
  File "C:UsersusernameOneDriveDesktopemadeldeenAttnSleepmodelloss.py", line 6, in weighted_CrossEntropyLoss
    cr = nn.CrossEntropyLoss(weight=torch.tensor(classes_weights).cuda())
  File "C:UsersusernameAppDataLocalProgramsPythonPython37libsite-packagestorchcuda__init__.py", line 196, in _lazy_init
    _check_driver()
  File "C:UsersusernameAppDataLocalProgramsPythonPython37libsite-packagestorchcuda__init__.py", line 94, in _check_driver
    raise AssertionError("Torch not compiled with CUDA enabled")
AssertionError: Torch not compiled with CUDA enabled
 

Я изменил количество GPU в конфигурации на 0 и попытался добавить device = torch.device('cpu') в начале программы, но это ничего не дает. Как я могу исправить эту ошибку? Я использую Windows 10 с python 3.7.9, если это поможет

Спасибо

Ответ №1:

Вы используете только процессор pytorch, но в вашем коде есть оператор, подобный cr = nn.CrossEntropyLoss(weight=torch.tensor(classes_weights).cuda()) тому, который пытается переместить тензор на графический процессор.

Чтобы исправить это, удалите все .cuda() операции.