PyTorch CIFAR10数据集 - 无法获取第一个项。

4

我使用torchvision库选择了CIFAR 10数据集:

trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                        download=True, transform=transforms.ToTensor())

然后我尝试选择数据集中的第一个项目,我理解这实现了数据集类的get_item方法:

trainset[0]

我获得了

File "env\lib\site-packages\torchvision\transforms\functional.py", line 129, in to_tensor
    np.array(pic, mode_to_nptype.get(pic.mode, np.uint8), copy=True)
TypeError: __array__() takes 1 positional argument but 2 were given

有什么想法吗,为什么我会得到这个错误?

Python版本是3.7.9,torch版本是1.9.0,torchvision版本是0.10.0。


可能是版本不匹配。尝试降级torch、torchvision和numpy。 - Natthaphon Hongcharoen
1
我将Pillow从8.3.0版本降级到8.2.0版本,现在它可以工作了。所以我猜测Pillow 8.3.0存在一个bug。 - phil
1个回答

1

我也遇到了这个错误:

def get_transformations():
    return transforms.Compose([transforms.ToTensor()])

...

self.transforms = get_transformations()

...

# Load the image + augment
img = Image.open(img_path).convert("RGB")
img = self.transforms(img)

...

Original Traceback (most recent call last):
  File "c:\2021-mcm-master\src\PyTorch-RCNN\ui-prediction\env\lib\site-packages\torch\utils\data\_utils\worker.py", line 287, in _worker_loop
    data = fetcher.fetch(index)
  File "c:\2021-mcm-master\src\PyTorch-RCNN\ui-prediction\env\lib\site-packages\torch\utils\data\_utils\fetch.py", line 44, in fetch
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "c:\2021-mcm-master\src\PyTorch-RCNN\ui-prediction\env\lib\site-packages\torch\utils\data\_utils\fetch.py", line 44, in <listcomp>
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "c:\2021-mcm-master\src\PyTorch-RCNN\ui-prediction\src\screenshot_dataset.py", line 112, in __getitem__
    img = self.transforms(img)
  File "c:\2021-mcm-master\src\PyTorch-RCNN\ui-prediction\env\lib\site-packages\torchvision\transforms\transforms.py", line 60, in __call__
    img = t(img)
  File "c:\2021-mcm-master\src\PyTorch-RCNN\ui-prediction\env\lib\site-packages\torchvision\transforms\transforms.py", line 97, in __call__
    return F.to_tensor(pic)
  File "c:\2021-mcm-master\src\PyTorch-RCNN\ui-prediction\env\lib\site-packages\torchvision\transforms\functional.py", line 129, in to_tensor
    np.array(pic, mode_to_nptype.get(pic.mode, np.uint8), copy=True)
TypeError: __array__() takes 1 positional argument but 2 were given

根据@Phil的建议,将Pillow从8.3.0降级到8.2.0解决了这个问题:
pip install pillow==8.2.0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接