【问题标题】:Why is the accuracy difference so much when I use the image data set and pytorch's own data set directly?为什么我直接用image数据集和pytorch自己的数据集,准确率相差这么大?
【发布时间】:2020-08-11 06:21:07
【问题描述】:

以cifar10数据集为例,直接使用pytorch自带的数据集,在同样的网络结构下准确率可以达到96%,但是我将cifar10转换成图片后,测试了一下,准确率率只有 92%。为什么?

这是之前的代码:

train_dataset = dset.CIFAR10(args.data_path, train=True, transform=train_transform, download=True)
test_dataset = dset.CIFAR10(args.data_path, train=False, transform=test_transform, download=True)

这是修改后的代码:

train_dataset = datasets.ImageFolder(root='/home/ubuntu/bigdisk/DataSets/cifar10/static/orig/train/',
                                         transform=train_transform
                                         )
test_dataset = datasets.ImageFolder(root='/home/ubuntu/bigdisk/DataSets/cifar10/static/orig/test/',
                                        transform=test_transform
                                        )
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=args.batch_size, shuffle=True,
                                               num_workers=args.prefetch, pin_memory=True)
test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=args.test_bs, shuffle=False,
                                              num_workers=args.prefetch, pin_memory=True)

【问题讨论】:

  • 嗨,欢迎来到 SO。你从哪里得到你的数据?以下是 PyTorch 数据的来源:base_folder = 'cifar-10-batches-py' url = "https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz" filename = "cifar-10-python.tar.gz"
  • 我的数据是把CIFAR-10 python版本转成img

标签: deep-learning dataset pytorch torchvision


【解决方案1】:

如果下载的数据集、超参数(例如批量大小或学习率)、数据集转换等都相等,我认为是因为随机性。

您的数据加载器会随机打乱数据集。每次洗牌时,洗牌后的数据集总是不同的,这可能会导致准确性差异。

此外,模型每次都会使用不同的值进行初始化。 (除非您使用了某些始终使用相同值初始化模型的初始化方法。)

您可以查看https://pytorch.org/docs/stable/notes/randomness.html 了解更多信息。

【讨论】:

  • 感谢您的回复!如上代码所示,我只是修改了加载数据集的路径,从~/DATASETS/cifar.python到root='/home/ubuntu/bigdisk/DataSets/cifar10/static/orig/train/,其他如train_transform 没有改变。只是路径变了。使用cifar.python,每次可以达到96%以上,而使用cifar.python转换的img路径,每次准确率只有92%。
  • @Arvin 所以你说两个数据集是相同的。正如我在答案中所说,这可能是因为随机性。请检查链接并重新训练两个具有可重复性选项的数据集并比较结果。
猜你喜欢
  • 2020-03-11
  • 1970-01-01
  • 2019-09-18
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 2020-09-28
  • 2011-05-29
相关资源
最近更新 更多