Получение ошибки при обучении Resnet50 в Imagenet в 14-ю эпоху

#python #pytorch #imagenet #pytorch-dataloader

#питон #пыторч #imagenet #pytorch-загрузчик данных

Вопрос:

Я тренирую Resnet50 в imagenet, используя скрипт, предоставленный PyTorch (с небольшой тривиальной настройкой для моей цели). Тем не менее, я получаю следующую ошибку после 14 эпох обучения. Я выделил 4 графических процессора на сервере, который я использую для запуска этого. Любые указания на то, в чем заключается эта ошибка, будут оценены с благодарностью. Большое спасибо!

 Epoch: [14][5000/5005]  Time 1.910 (2.018)  Data 0.000 (0.191)  Loss 2.6954 (2.7783)    Total 2.6954 (2.7783)   Reg 0.0000  Prec@1 42.969 (40.556)  Prec@5 64.844 (65.368)   
Test: [0/196]   Time 86.722 (86.722)    Loss 1.9551 (1.9551)    Prec@1 51.562 (51.562)  Prec@5 81.641 (81.641)
Traceback (most recent call last):
  File "main_group.py", line 549, in <module>
  File "main_group.py", line 256, in main
    
  File "main_group.py", line 466, in validate
    if args.gpu is not None:
  File "/home/users/oiler/anaconda3/envs/ml/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 801, in __next__
    return self._process_data(data)
  File "/home/users/oiler/anaconda3/envs/ml/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 846, in _process_data
    data.reraise()
  File "/home/users/oiler/anaconda3/envs/ml/lib/python3.7/site-packages/torch/_utils.py", line 385, in reraise
    raise self.exc_type(msg)
OSError: Caught OSError in DataLoader worker process 11.
Original Traceback (most recent call last):
  File "/home/users/oiler/anaconda3/envs/ml/lib/python3.7/site-packages/torch/utils/data/_utils/worker.py", line 178, in _worker_loop
    data = fetcher.fetch(index)
  File "/home/users/oiler/anaconda3/envs/ml/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/home/users/oiler/anaconda3/envs/ml/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py", line 44, in <listcomp>
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/home/users/oiler/anaconda3/envs/ml/lib/python3.7/site-packages/torchvision/datasets/folder.py", line 138, in __getitem__
    sample = self.loader(path)
  File "/home/users/oiler/anaconda3/envs/ml/lib/python3.7/site-packages/torchvision/datasets/folder.py", line 174, in default_loader
    return pil_loader(path)
  File "/home/users/oiler/anaconda3/envs/ml/lib/python3.7/site-packages/torchvision/datasets/folder.py", line 155, in pil_loader
    with open(path, 'rb') as f:
OSError: [Errno 5] Input/output error: '/data/users2/oiler/github/imagenet-data/val/n02102973/ILSVRC2012_val_00009130.JPEG'
 

Ответ №1:

Трудно сказать, в чем проблема, просто взглянув на опубликованную вами ошибку.

Все, что мы знаем, это то, что возникла проблема при чтении файла '/data/users2/oiler/github/imagenet-data/val/n02102973/ILSVRC2012_val_00009130.JPEG' .

Попробуйте следующее:

  1. Подтвердите, что файл действительно существует.
  2. Подтвердите, что это действительно правильный JPEG и не поврежден (путем его просмотра).
  3. Подтвердите, что вы можете открыть его с помощью Python, а также загрузить вручную с помощью PIL.
  4. Если ничего из этого не работает, попробуйте удалить файл. Вы получаете ту же ошибку для другого файла в папке?

Комментарии:

1. Спасибо за ответ. Я вернулся и выполнил предложенные вами шаги. Файл действительно существует, его можно просмотреть, и PIL может загрузить его вручную. Более того, поскольку было выполнено 14 эпох обучения, я предполагаю, что этот файл был успешно загружен 14 раз. Считаете ли вы, что за ошибкой могут стоять какие-либо другие причины?