代码之家  ›  专栏  ›  技术社区  ›  odbhut.shei.chhele

如何解决错误:RuntimeError:收到0项ancdata

  •  0
  • odbhut.shei.chhele  · 技术社区  · 2 年前

    我有一个手电筒。UTIL。数据数据加载器。我用以下代码创建了它们。

    transform_train = transforms.Compose([
        transforms.RandomCrop(32, padding=4),
        transforms.RandomHorizontalFlip(),
        transforms.ToTensor(),
        transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)),
    ])
    
    trainset = CIFAR100WithIdx(root='.',
                               train=True,
                               download=True,
                               transform=transform_train,
                               rand_fraction=args.rand_fraction)
    
    train_loader = torch.utils.data.DataLoader(trainset,
                                               batch_size=args.batch_size,
                                               shuffle=True,
                                               num_workers=args.workers)
    

    但是当我运行下面的代码时,我得到了一个错误。

    train_loader_2 = []
    for i, (inputs, target, index_dataset) in enumerate(train_loader):
        train_loader_2.append((inputs, target, index_dataset))
    

    错误是

    Traceback (most recent call last):
      File "main_superloss.py", line 460, in <module>
        main()
      File "main_superloss.py", line 456, in main
        main_worker(args)
      File "main_superloss.py", line 374, in main_worker
        train_loader, val_loader = get_train_and_val_loader(args)
      File "main_superloss.py", line 120, in get_train_and_val_loader
        for i, (inputs, target, index_dataset) in enumerate(train_loader):
      File "/home/C00423766/.conda/envs/dp/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 804, in __next__
        idx, data = self._get_data()
      File "/home/C00423766/.conda/envs/dp/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 771, in _get_data
        success, data = self._try_get_data()
      File "/home/C00423766/.conda/envs/dp/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 724, in _try_get_data
        data = self.data_queue.get(timeout=timeout)
      File "/home/C00423766/.conda/envs/dp/lib/python3.7/multiprocessing/queues.py", line 113, in get
        return _ForkingPickler.loads(res)
      File "/home/C00423766/.conda/envs/dp/lib/python3.7/site-packages/torch/multiprocessing/reductions.py", line 284, in rebuild_storage_fd
        fd = df.detach()
      File "/home/C00423766/.conda/envs/dp/lib/python3.7/multiprocessing/resource_sharer.py", line 58, in detach
        return reduction.recv_handle(conn)
      File "/home/C00423766/.conda/envs/dp/lib/python3.7/multiprocessing/reduction.py", line 185, in recv_handle
        return recvfds(s, 1)[0]
      File "/home/C00423766/.conda/envs/dp/lib/python3.7/multiprocessing/reduction.py", line 161, in recvfds
        len(ancdata))
    RuntimeError: received 0 items of ancdata
    

    我想获取列表中的数据是因为我想对样本重新排序。不是以随机的方式,而是以特定的方式。对于我如何做到这一点,有什么建议吗?提前谢谢。

    0 回复  |  直到 2 年前