我在做 PyTorch 教程(https://pytorch.org/tutorials/intermediate/torchvision_tutorial.html)时遇到了这个错误,我不知道如何解决。完整的错误信息如下:
Traceback (most recent call last): File "main.py", line 146, in <module> main() File "main.py", line 138, in main train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq=10) File "/engine.py", line 26, in train_one_epoch for images, targets in metric_logger.log_every(data_loader, print_freq, header): File "/utils.py", line 180, in log_every for obj in iterable: File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/dataloader.py", line 521, in __next__ data = self._next_data() File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/dataloader.py", line 1203, in _next_data return self._process_data(data) File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/dataloader.py", line 1229, in _process_data data.reraise() File "/usr/local/lib/python3.6/dist-packages/torch/_utils.py", line 425, in reraise raise self.exc_type(msg)TypeError: Caught TypeError in DataLoader worker process 0.Original Traceback (most recent call last): File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/_utils/worker.py", line 287, in _worker_loop data = fetcher.fetch(index) File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch data = [self.dataset[idx] for idx in possibly_batched_index] File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/_utils/fetch.py", line 44, in <listcomp> data = [self.dataset[idx] for idx in possibly_batched_index] File "/usr/local/lib/python3.6/dist-packages/torch/utils/data/dataset.py", line 311, in __getitem__ return self.dataset[self.indices[idx]] File "main.py", line 64, in __getitem__ img, target = self.transforms(img, target) File "/transforms.py", line 26, in __call__ image, target = t(image, target) File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 1051, in _call_impl return forward_call(*input, **kwargs) File "/transforms.py", line 50, in forward image = F.to_tensor(image) File "/usr/local/lib/python3.6/dist-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
我认为这意味着我在某个地方使用了两个参数的数组,这是不允许的,但我不知道这是在哪里发生的——可能是他们预先编写的库中的某处吗?
如果需要,我可以分享完整的代码,但我觉得这样做有点笨拙。有人知道可能导致这个错误的原因吗?
回答:
我在使用以下版本时也遇到了同样的错误:
torch==1.9.0torchvision==0.10.0
在我的 requirements.txt 文件中,我降级了 torch 库,这迫使我降级 torchvision,这解决了我的错误。我最终使用的没有引发错误的库版本是:
torch==1.8.1torchvision==0.9.1