#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()
операции.