«TypeError: тензор не является изображением факела» иногда появляется при изменении кода и исчезает после повторного запуска кода - PullRequest
0 голосов
/ 14 апреля 2019

Я учусь использовать Pytorch, следуя официальному учебнику: https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html

Все шло гладко, пока я не запустил пример классификации CIFAR10. (Я вообще не изменял код)

Сообщение об ошибке:

Traceback (most recent call last):
  File "/tmp/pycharm_project_331/main.py", line 90, in <module>
    for i, data in enumerate(trainloader, 0):
  File "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", line 286, in __next__
    return self._process_next_batch(batch)
  File "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", line 307, in _process_next_batch
    raise batch.exc_type(batch.exc_msg)
TypeError: Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", line 57, in _worker_loop
    samples = collate_fn([dataset[i] for i in batch_indices])
  File "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", line 57, in <listcomp>
    samples = collate_fn([dataset[i] for i in batch_indices])
  File "/usr/local/lib/python3.5/dist-packages/torchvision/datasets/cifar.py", line 121, in __getitem__
    img = self.transform(img)
  File "/usr/local/lib/python3.5/dist-packages/torchvision/transforms/transforms.py", line 49, in __call__
    img = t(img)
  File "/usr/local/lib/python3.5/dist-packages/torchvision/transforms/transforms.py", line 143, in __call__
    return F.normalize(tensor, self.mean, self.std)
  File "/usr/local/lib/python3.5/dist-packages/torchvision/transforms/functional.py", line 165, in normalize
    raise TypeError('tensor is not a torch image.')
TypeError: tensor is not a torch image.

Я подумал, может быть, мне не хватает некоторых кодов, но код в порядке. Поэтому я снова запустил код еще несколько раз. Сообщение об ошибке как-то исчезает, и обучение прошло гладко.

Я не могу найти шаблон, чтобы повторить ошибку. Он просто появляется всякий раз, когда я меняю код, и исправляется без какой-либо модификации кода.

Я настроил PyCharm для подключения к удаленным интерпретаторам через SSH (сервер Ubuntu), но то же самое произошло, когда я использую локальный интерпретатор и запускаю код через консоль python.

Это так расстраивает, потому что я понятия не имею, если мой код неверен или происходит то же самое.

1 Ответ

0 голосов
/ 14 апреля 2019

Вы определенно изменили свой код, и поэтому возникает ошибка.

Проблема заключается в преобразовании ToTensor из torchvision, особенно в этом фрагменте:

transform = transforms.Compose(
    [transforms.ToTensor(),
     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

Вам нужнопреобразовать PIL изображение в torch.Tensor объект для его нормализации.Если вы удалите transforms.ToTensor(), у вас останется вышеуказанная ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...