littleurna 2024-09-07 11:13 采纳率: 0%
浏览 13

ValueError: num_samples should be a positive integer value, but got num_samples=0

在创建PyTorch的DataLoader时,传递给它的数据集是空的,具体是尝试加载CUB-200数据集时,我的get_cub200_dataloaders函数是:

def get_cub200_dataloaders(batch_size=128, num_workers=8, is_instance=False):

    normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])

    train_transform = transforms.Compose([
        transforms.Resize((256, 256)),
        transforms.RandomCrop(224),
        transforms.RandomHorizontalFlip(),
        transforms.ToTensor(),
        normalize
    ])

    test_transform = transforms.Compose([
        transforms.Resize((256, 256)),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        normalize
    ])

    if is_instance:
        train_set = CUB2011Classification_Instance(root='./data',
                                          download=True,
                                          train=True,
                                          transform=train_transform)
        n_data = len(train_set)
    else:
        train_set = CUB2011Classification(root='./data', train=True, download=True, transform=train_transform)

    train_loader = DataLoader(train_set,
                              batch_size=batch_size,
                              shuffle=True,
                              num_workers=num_workers,
                              drop_last=True)

    test_set = CUB2011Classification(root='./data', train=False, download=True, transform=test_transform)
    test_loader = DataLoader(test_set,
                             batch_size=int(batch_size / 2),
                             shuffle=False,
                             num_workers=int(num_workers / 2))

    if is_instance:
        return train_loader, test_loader, n_data
    else:
        return train_loader, test_loader

下载的数据集结构是:

img

运行代码后报错:

Traceback (most recent call last):
  File "C:\Users\59225\Desktop\我的文档\工作学习\实验\SDD-CVPR2024-main\train_origin.py", line 211, in <module>
    main(cfg, args.resume, args.opts)
  File "C:\Users\59225\Desktop\我的文档\工作学习\实验\SDD-CVPR2024-main\train_origin.py", line 118, in main
    train_loader, val_loader, num_data, num_classes = get_dataset(cfg)
  File "C:\Users\59225\Desktop\我的文档\工作学习\实验\SDD-CVPR2024-main\mdistiller\dataset\__init__.py", line 25, in get_dataset
    train_loader, val_loader, num_data = get_cub200_dataloaders(
  File "C:\Users\59225\Desktop\我的文档\工作学习\实验\SDD-CVPR2024-main\mdistiller\dataset\cub200.py", line 175, in get_cub200_dataloaders
    train_loader = DataLoader(train_set,
  File "D:\Anaconda\envs\pyTorchEnv\lib\site-packages\torch\utils\data\dataloader.py", line 277, in __init__
    sampler = RandomSampler(dataset, generator=generator)  # type: ignore[arg-type]
  File "D:\Anaconda\envs\pyTorchEnv\lib\site-packages\torch\utils\data\sampler.py", line 97, in __init__
    raise ValueError("num_samples should be a positive integer "
ValueError: num_samples should be a positive integer value, but got num_samples=0


请问有没有hxd可以帮帮忙?

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-07 11:14
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    根据您提供的信息,您遇到的错误可能是由于数据集中没有图像或文件结构问题导致的。特别是报错信息“ValueError: num_samples should be a positive integer value, but got num_samples=0”表明在尝试创建PyTorch的DataLoader时,提供给它的数据集是空的。为了解决这个问题,您可以尝试以下几个步骤:

    1. 检查数据集完整性:确保您下载的数据集完整且未损坏。有时下载过程中可能会出现问题,导致某些文件丢失或损坏。
    2. 检查文件结构:根据您提供的文件结构图,似乎有一些文件和文件夹的名称存在乱码或特殊字符。确保文件路径和名称都是正确的,并且符合您的数据集代码所期望的结构。
    3. 检查数据集类的实现:确认CUB2011ClassificationCUB2011Classification_Instance这两个类的实现是否正确。特别是要确保它们能够正确地读取图像并处理数据集中的元数据。
    4. 验证数据集的路径:确保您在CUB2011Classification类的构造函数中指定的root路径是正确的,并且数据集确实存在于该路径下。
    5. 检查数据加载器参数:确保传递给DataLoader的参数(如batch_sizenum_workers)是合理的,并且与您的系统配置相匹配。
    6. 调试数据集类:如果问题仍然存在,尝试在加载数据集时添加一些打印语句或调试信息,以查看数据集类是否能够正确读取图像和元数据。

    如果以上步骤都没有解决问题,可能需要更深入地检查代码和数据集的实现细节。您还可以考虑查看相关的文档或示例代码,以确保您的实现与预期相符。

    评论

报告相同问题?

问题事件

  • 修改了问题 9月7日
  • 创建了问题 9月7日

悬赏问题

  • ¥15 centos7系统下abinit安装时make出错
  • ¥15 帮看看这个为何无法运行
  • ¥15 hbuildex运行微信小程序报错
  • ¥50 HAL ADCDMA单次触发转换
  • ¥15 关于#python#的问题:我知道这个问题对你们来说肯定so easy
  • ¥15 wpf datagrid如何实现多层表头
  • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
  • ¥20 网站后台使用极速模式非常的卡
  • ¥20 Keil uVision5创建project没反应
  • ¥15 mmseqs内存报错