Numpy 如何调整数据加载器并制作新的数据加载器?
假设我有一个cifar10的数据加载器Numpy 如何调整数据加载器并制作新的数据加载器?,numpy,pytorch,dataloader,Numpy,Pytorch,Dataloader,假设我有一个cifar10的数据加载器 如果我想从数据加载器中删除一些值并创建一个新的数据加载器 我该怎么做 def load_data_cifar10(batch_size=128,test=False): if not test: train_dset = torchvision.datasets.CIFAR10(root='/mnt/3CE35B99003D727B/input/pytorch/data', train=True,
如果我想从数据加载器中删除一些值并创建一个新的数据加载器
我该怎么做
def load_data_cifar10(batch_size=128,test=False):
if not test:
train_dset = torchvision.datasets.CIFAR10(root='/mnt/3CE35B99003D727B/input/pytorch/data', train=True,
download=True, transform=transform)
else:
train_dset = torchvision.datasets.CIFAR10(root='/mnt/3CE35B99003D727B/input/pytorch/data', train=False,
download=True, transform=transform)
train_loader = torch.utils.data.DataLoader(train_dset, batch_size=batch_size, shuffle=True)
print("LOAD DATA, %d" % (len(train_loader)))
return train_loader
您可以使用数据集。这将使用另一个数据集作为输入以及索引列表来构建新的数据集。假设你想要前1000个条目,那么你就可以
subset_train_dset = torch.utils.data.Subset(train_dset, range(1000))
您还可以使用dataset或ConcatDataset
和Subset
的组合构建由多个数据集组成的数据集,以构建您喜欢的任何内容
frankenstein_dset = torch.utils.data.ConcatDataset((
torch.utils.data.Subset(dset1, range(1000)),
torch.utils.data.Subset(dset2, range(100)))
在您的情况下,您需要查看实现细节以确定要保留哪些索引,或者您可以编写一些代码,首先遍历原始数据集并保存所有要保留的索引,然后用适当的索引定义一个子集。关于数据加载器,您想更改什么?子集_train _dset.dataset.data.shape。无法使用真正的数据加载器。对于枚举(dataloader)中的idx(img,target):抛出错误:TypeError:“dataloader”对象不是subscriptablesubset\u train\u dset=torch.utils.data.Subset(dataloader,range(1000))对于枚举(Subset\u train\u dset)中的idx(img,target):print(idx,,:',img.shape)数据集通常没有
成员(这是针对特定数据集的)。有关更多信息,请阅读文档,但数据集需要实现的唯一内容是\uuuu getitem\uuuuuuuuu
和\uuuuu len\uuuuu
。因此,如果您想要数据集对象的长度,必须使用len(数据集)
作为一般解决方案。