怎样正确使用CIFAR10的数据集加载模块?
Qinzheng7575 opened this issue · 5 comments
我在使用PartitionedCIFAR10类想来实现CIFAR数据的分类和加载时,不知道具体该怎么操作?是先实例化这个类,然后分别调用preprocess等函数吗?希望能够给出一个加载数据的demo。之前的demo是基于fedlab.utils.dataset.partition 中CIFAR10Partitioner的,而例子里面的sampler函数已经弃用了。
P.S.我在尝试使用的时候报错File ../train\data0.pkl cannot be opened.不知道该从何下手解决
追加:我大概知道怎么使用了,已经将数据集preprocess分好16个client了,但是在后面get_dataloader()的时候,我以为和一般pytorch的dataloader类一样使用,就for batch_idx, (data, target) in enumerate(data_load):了,但是会报错default_collate: batch must contain tensors, numpy arrays, numbers, dicts or lists; found <class 'PIL.Image.Image'>,这下真不知道该怎么做了
再次追加:
`
hetero = PartitionedCIFAR10(
root='/cifar10',
path='/cifar10_hetero_dir.pkl',
dataname="cifar10",
num_clients=num_clients,
download=False,
preprocess=False,
balance=False,
partition="dirichlet",
seed=seed,
dir_alpha=0.3,
transform=transforms.ToTensor(),
target_transform=transforms.ToTensor()
)
train_data = hetero.get_dataset(0)
train_loader = hetero.get_dataloader(0, batch_size=64)
`
我解决了!出现报错的根本原因是再dataset里面没有transform成ToTensor(),而我在修改了transform之后,却忘了重新perprocess一下,导致.pkl文件没有更新现在已经问题解决,可以像正常使用dataloader一样加载数据了!!!
刚刚真的好焦虑好焦虑,周五就让我开会汇报,昨天还在提项目要求,整个团队研一的就我有任务5555555555
谢谢学长的Fedlad,小星星已经给了,以后争取我也能做出贡献!
谢谢🙏数据准备部分我们还会做后续改进,欢迎提意见