【问题标题】:IndexError when iterating my dataset using Dataloader in PyTorch在 PyTorch 中使用 Dataloader 迭代我的数据集时出现 IndexError
【发布时间】:2019-05-17 12:59:03
【问题描述】:

我在 PyTorch 0.2 中使用 Dataloader 迭代了我的数据集,如下所示:

dataloader = torch.utils.data.DataLoader(...)
data_iter = iter(dataloader)
data = data_iter.next()

但是引发了 IndexError。

Traceback (most recent call last):
  File "main.py", line 193, in <module>
    data_target = data_target_iter.next()
  File "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", line 201, in __next__
    return self._process_next_batch(batch)
  File "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", line 221, in _process_next_batch
    raise batch.exc_type(batch.exc_msg)
IndexError: Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", line 40, 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 40, in <listcomp>
    samples = collate_fn([dataset[i] for i in batch_indices])
  File "/home/asr4/zhuminxian/adversarial/code/dataset/data_loader.py", line 33, in __getitem__
    return self.X_train[idx], self.y_train[idx]
IndexError: index 4196 is out of bounds for axis 0 with size 4135

我想知道为什么索引超出范围。是 Pytorch 的 bug 吗?

我尝试再次运行我的代码,但出现了相同的错误,但在不同的迭代和不同的越界索引。

【问题讨论】:

  • 你能不能这样试试:data_iter = iter(torch.utils.data.DataLoader(...));数据 = data_iter.next()

标签: machine-learning deep-learning computer-vision pytorch


【解决方案1】:

我的猜测是您的data.Dataset.__len__ 没有正确重载,实际上len(dataloader.dataset) 返回的数字大于len(self.X_train)
'/home/asr4/zhuminxian/adversarial/code/dataset/data_loader.py' 中检查您对底层数据集的实现。

【讨论】:

    猜你喜欢
    • 2020-07-05
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 2019-11-06
    • 2019-04-27
    相关资源
    最近更新 更多