联邦化数据集和DataPartitioner#

考虑到现实真实情况的复杂性,联邦学习需要应对各种数据分布的场景,包括iid和non-iid场景。在实验中往往需要根据client数量以及具体分布和划分策略对完整的训练数据集和测试数据集进行划分。尽管当前公开的数据集已存在一些划分策略,如何维护数据划分相关数据结构仍旧非常麻烦,以及尽管用了相同分布,不同复现给出的具体代码实现划分实现仍旧存在差异。FedLab为用户提供了 fedlab.utils.dataset.partition.DataPartitioner 来使用一些预划分的数据集或是你自己的数据。给定划分策略,DataPartitioner 可以维护每个client在划分后拥有的样本序号。同时,FedLab提供了已被用于联邦学习但是PyTorch的 torchvision.datasets 尚未提供的一些数据集。

备注

目前这部分设计和实现是基于 LEAF [2]Acar et al. [5]Yurochkin et al. [6] 和NIID-Bench [7]

视觉数据#

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提供了对应的 DatasetDataPartitioner。FCUBE教程:FCUBE教程.

LEAF-Synthetic#

LEAF-Synthetic是由LEAF提出的联邦化数据集。client数量、类数量和特征维度均可由用户自定义。

更多细节请参考 LEAF-Synthetic