有时在代码修改时出现“TypeError:tensor不是火炬图像”,并在我再次运行代码后消失

问题描述 投票:0回答:1

我正在学习如何使用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控制台运行代码时,也发生了同样的事情。

这是非常令人沮丧的,因为我不知道我的代码是错误还是发生了同样的事情。

python pycharm pytorch
1个回答
0
投票

你肯定修改了你的代码,这就是错误发生的原因。

问题在于ToTensortorchvision转换,这个片段具体来说:

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

您需要将PIL图像转换为torch.Tensor对象以对其进行标准化。如果您删除transforms.ToTensor(),则会出现上述错误。

© www.soinside.com 2019 - 2024. All rights reserved.