联邦化数据集和DataPartitioner#
考虑到现实真实情况的复杂性,联邦学习需要应对各种数据分布的场景,包括iid和non-iid场景。在实验中往往需要根据client数量以及具体分布和划分策略对完整的训练数据集和测试数据集进行划分。尽管当前公开的数据集已存在一些划分策略,如何维护数据划分相关数据结构仍旧非常麻烦,以及尽管用了相同分布,不同复现给出的具体代码实现划分实现仍旧存在差异。FedLab为用户提供了 fedlab.utils.dataset.partition.DataPartitioner
来使用一些预划分的数据集或是你自己的数据。给定划分策略,DataPartitioner
可以维护每个client在划分后拥有的样本序号。同时,FedLab提供了已被用于联邦学习但是PyTorch的 torchvision.datasets
尚未提供的一些数据集。
视觉数据#
CIFAR10#
FedLab为部分数据集(比如CIFAR10)提供了一些预定义的数据划分方案,以及为特定数据划分方案提供的函数实现。他们可以被用作你的联邦学习算法的测试基准设置。
CIFAR10Partitioner
的教程:CIFAR10教程。
CIFAR100#
CIFAR100Partitioner
的notebook教程:CIFAR100教程.
FMNIST#
FMNIST(FashionMNIST)划分的notebook教程:FMNIST教程.
MNIST#
MNIST和FMNIST非常相似,请参考 FMNIST教程。
SVHN#
SVHN的数据划分教程:SVHN教程。
CelebA#
CelebA的数据划分:CelebA教程。
FEMNIST#
FEMNIST的数据划分:FEMNIST教程。
文本数据#
Shakespeare#
Shakespeare数据集的数据划分:Shakespeare教程。
Sent140#
Sent140数据划分:Sent140教程。
Reddit#
Reddit数据划分:Reddit教程。
列表数据#
Adult#
Adult数据集出自 LIBSVM Data。数据原始来源于 UCI/Adult. FedLab不仅提供了Adult对应的 Dataset
,还提供了对应的 DataPartitioner
。Adult的notebook教程:Adult教程。
Covtype#
Covtype数据集出自 LIBSVM Data。数据原始来源于 UCI/Covtype. FedLab不仅提供了Covtype对应的 Dataset
,还提供了对应的 DataPartitioner
。Covtype的notebook教程:Covtype教程。
RCV1#
RCV1数据集出自 LIBSVM Data。数据原始来源于 UCI/RCV1. FedLab不仅提供了RCV1对应的 Dataset
,还提供了对应的 DataPartitioner
。RCV1的notebook教程:RCV1教程。
合成数据#
FCUBE#
FCUBE是为联邦学习设计的一种合成数据集。FedLab提供了对应的 Dataset
和 DataPartitioner
。FCUBE教程:FCUBE教程.
LEAF-Synthetic#
LEAF-Synthetic是由LEAF提出的联邦化数据集。client数量、类数量和特征维度均可由用户自定义。
更多细节请参考 LEAF-Synthetic。