列车图像数据集和列车图像加载器的长度不同



image_datasets是一个包含训练和测试数据的字典。

以下代码:

transforms= transforms.Compose([transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
image_datasets = {'train': datasets.CIFAR10(root=data_dir, train=True, download=True, 
transform=transforms),
'test': datasets.CIFAR10(root=data_dir, train=False, download=True,
transform=transforms)
}
image_datasets

输出:

{'test': Dataset CIFAR10
Number of datapoints: 10000
Root location: ../Data
Split: Test
StandardTransform
Transform: Compose(
ToTensor()
Normalize(mean=(0.5, 0.5, 0.5), std=(0.5, 0.5, 0.5))
), 'train': Dataset CIFAR10
Number of datapoints: 50000
Root location: ../Data
Split: Train
StandardTransform
Transform: Compose(
ToTensor()
Normalize(mean=(0.5, 0.5, 0.5), std=(0.5, 0.5, 0.5))
)}
#CREATING DATA LOADER 
data_loaders = {
'train': DataLoader(image_datasets['train'], 10, shuffle=True),
'test': DataLoader(image_datasets['test'], 10)}

当我调用len(data_loaders['train'])时,它返回

5000

定义数据加载器时,我使用的是batch_size=10。是我的data_loader的长度除以我的batch_size。刚开始编码,只是想仔细检查一下。

简而言之,

  • len(data_loaders['train'].dataset)提供数据集中的实例数量,例如CIFAR10中的50000个实例
  • len(data_loaders['train'])为您提供该数据加载器中的批次数量,例如,如果您的批次_大小=10,则CIFA10中的5000。批次数由len(dataset)/(batch_size)计算

因此,当我们计算每个历元中的精度时,我们将正确的数除以len(data_loaders['train'].dataset)而不是len(data_loaders['train']),因为我在Stack Overflow中为精度超过100%的人修复了这个错误,原因是除以len(data_loaders['train'])

最新更新