什么?这么常见的分布式数据集还有你没用过的?

今天开始介绍分布式的常用数据集(因为我的研究领域是分布式机器学习,所以下面列出的数据集可能偏向这方面,做其他方向的童鞋参考下就好)。

  1. CV数据集
    (1)FEMINIST

任务:手写字符识别
参数说明: 62种不同的字符类别 (10种数字, 26种小写, 26种大写)的像素图片, 图片全为28乘28像素大小 (可以选择将其转为128×128), 样本数805263。
介绍: FEMNIST数据集全名Federated-MNIST, 属于专门给联邦学习用的基准数据集leaf的成员之一。

引用方式:S Caldas, LEAF: A Benchmark for Federated Settings, 2018.
获取方式:采用脚本获取

wget https://s3.amazonaws.com/nist-srd/SD19/by_class.zipwget https://s3.amazonaws.com/nist-srd/SD19/by_write.zip

(2)EMINIST

任务:手写字符识别
参数说明: 按照byclass方式split的话是62种不同的字符类别(各类别数量不均衡) (10种数字, 26种小写, 26种大写)的像素图片, 图片全为28乘28像素大小, 样本数814255。
介绍: EMNIST数据集全名extension of MNIST,是MINIST数据集的扩展版。
官网:https://www.nist.gov/itl/products-and-services/emnist-dataset
引用方式:Cohen G, EMNIST: an extension of MNIST to handwritten letters, 2017
获取方式:可以采用脚本获取

wget https://www.itl.nist.gov/iaui/vip/cs_links/EMNIST/gzip.zip

也可以直接从torchvision中开箱即用

from torchvision.datasets import EMNISTfrom torchvision.transforms import Compose, ToTensor, NormalizeRAW_DATA_PATH = './rawdata’transform = Compose( [ToTensor(), Normalize((0.1307,), (0.3081,)) ] )dataset = EMNIST( root=RAW_DATA_PATH, split=“byclass”, download=True, train=True, transform=transform )

(3)CIFAR10

任务:图像分类
参数说明: 10种32x32的彩色图片(包括人、动物、花、昆虫等), 每种类别都有6000张图片. 50000张训练图片10000张测试图片.
介绍: CIFAR-10 是所谓的8千万张微型图片数据集的有标签子集。
官网:https://www.cs.toronto.edu/~kriz/cifar.html
引用方式:Alex Krizhevsky, Learning Multiple Layers of Features from Tiny Images, 2009.
获取方式:
直接从torchvision中开箱即用

from torchvision.datasets import CIFAR10from torchvision.transforms import Compose, ToTensor, NormalizeRAW_DATA_PATH = './rawdata’transform = Compose([ ToTensor(), Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010))])dataset = CIFAR10( root=RAW_DATA_PATH, download=True, train=True, transform=transform )

(3)CIFAR100

任务:图像分类
参数说明: 100种32x32的彩色图片(包括人、动物、花、昆虫等), 每种类别都有600张图片. 500张训练图片100张测试图片.
介绍: CIFAR-10的兄弟,也是所谓的8千万张微型图片数据集的有标签子集。
官网:https://www.cs.toronto.edu/~kriz/cifar.html
引用方式:Alex Krizhevsky, Learning Multiple Layers of Features from Tiny Images, 2009.
获取方式:
直接从torchvision中开箱即用

from torchvision.datasets import CIFAR100from torchvision.transforms import Compose, ToTensor, NormalizeRAW_DATA_PATH = './rawdata’transform = Compose([ ToTensor(), Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010))])dataset = CIFAR100(
root=RAW_DATA_PATH,
download=True,
train=True,
transform=transform )

  1. NLP数据集
    (1)Shakespeare

任务:下一个字符预测
参数说明:总共4,226,15条样本
介绍: 和FEMNST一样,属于专门给联邦学习用的基准数据集leaf的成员之一。
引用方式:LEAF: A Benchmark for Federated Settings
获取方式:
用脚本获取

3.普通回归/分类
(1)Synthetic

任务:二分类
参数说明:用户能够自定义分布式节点数量, 类别数量以及维度

介绍: 这个数据集提供了一个生成人工的、但是有挑战性的联邦学习数据集方法, 我们要求的目标是分布式节点上的模型能够尽量有独立性。论文中详细地给出了数据集的生成过程。和FEMNST一样,属于专门给联邦学习用的基准数据集leaf的成员之一。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
引用方式:LEAF: A Benchmark for Federated Settings
获取方式:
需按照下列python代码对数据集进行人工生成

from scipy.special import softmaxNUM_DIM = 10class SyntheticDataset:
def init(
self,
num_classes=2,
seed=931231,
num_dim=NUM_DIM,
prob_clusters=[0.5, 0.5]):
np.random.seed(seed)
self.num_classes = num_classes
self.num_dim = num_dim
self.num_clusters = len(prob_clusters)
self.prob_clusters = prob_clusters
self.side_info_dim = self.num_clusters
self.Q = np.random.normal(
loc=0.0, scale=1.0, size=(self.num_dim + 1, self.num_classes, self.side_info_dim))
self.Sigma = np.zeros((self.num_dim, self.num_dim))
for i in range(self.num_dim):
self.Sigma[i, i] = (i + 1)**(-1.2) self.means = self._generate_clusters()
def get_task(self, num_samples):
cluster_idx = np.random.choice( range(self.num_clusters), size=None, replace=True, p=self.prob_clusters)
new_task = self._generate_task(self.means[cluster_idx], cluster_idx, num_samples)
return new_task
def _generate_clusters(self):
means = []
for i in range(self.num_clusters):
loc = np.random.normal(loc=0, scale=1., size=None)
mu = np.random.normal(loc=loc, scale=1., size=self.side_info_dim)
means.append(mu)
return means
def _generate_x(self, num_samples):
B = np.random.normal(loc=0.0, scale=1.0, size=None)
loc = np.random.normal(loc=B, scale=1.0, size=self.num_dim)
samples = np.ones((num_samples, self.num_dim + 1))
samples[:, 1:] = np.random.multivariate_normal(
mean=loc, cov=self.Sigma, size=num_samples)
return samples
def _generate_y(self, x, cluster_mean):
model_info = np.random.normal(loc=cluster_mean, scale=0.1, size=cluster_mean.shape)
w = np.matmul(self.Q, model_info)
num_samples = x.shape[0]
prob = softmax(np.matmul(x, w) + np.random.normal(loc=0., scale=0.1, size=(num_samples, self.num_classes)), axis=1) y = np.argmax(prob, axis=1)
return y, w, model_info
def _generate_task(self, cluster_mean, cluster_id, num_samples):
x = self._generate_x(num_samples)
y, w, model_info = self._generate_y(x, cluster_mean)

now that we have y, we can remove the bias coeff

x = x[:, 1:]
return {‘x’: x, ‘y’: y, ‘w’: w, ‘model_info’: model_info, ‘cluster’: cluster_id}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值