联邦EMNIST数据集 (FEMNIST)

2023-11-14


Introduction

众所周知,MNIST手写数字数据集是机器学习的"Hello world!"级别的数据集,入门必定少不了它。但是很多人只知道MNIST是手写数字图片的数据集,并不清楚这个数据集和它的来源(NIST SD19)以及其衍生的数据集(EMNIST, FEMNIST)的关系。这里我会对这几个数据集做十分简短的介绍,并附上官网和原文链接,有需要的可以直接去看第一手资料。

NIST Special Database 19

NIST Special Database 19 实际上的名字叫做 NIST Handprinted Forms and Characters Database(NIST手写表格与字符数据库)。NIST全称为 National Institute of Standards and Technology (美国国家标准与技术研究院),因此NIST实际上是一个机构而不是某一个数据集,不过我们通常简称 NIST SD 19 这个数据集为 NIST数据集。
NIST SD 19这个数据集有两个版本,第一版1是1995年发布的,第二版2是2016年发布的,第二版实际上只是对第一版的文件格式做了一些调整,使得使用者更加方便能够用到数据,而从数据量来说并没有提升。
NIST SD 19包含62种字符(0-9,a-z,A-Z),采集自3699个手写表格(也就是3669个writer)。表格由几部分组成:数字digits,大写字母Upper,小写字母lower 以及一段宪法序言Constitution。
在这里插入图片描述

官网上提供了几种数据集的划分方式,包括:1.hsf_page,2.by_write,3.by_merge,4.by_field,5.by_class。
详情可以参考NIST SD 19官网3给出的Users’ Guide。

Modified NIST (MNIST)

从NISTSD19数据集导出的子集,只包含digits部分,而且调用接口比第一版的NISTSD19更加友好,因此使用广泛。

Extended MNIST (EMNIST)

从NISTSD19数据集导出的子集,包含了字母和数字,比MNIST的内容更多。而且对NISTSD19的接口进行了包装以兼容MNIST的接口,因此能够方便迁移到使用过MNIST数据集的模型上进行测试。

Federated Extended MNIST (FEMNIST)4

FEMNIST官网:https://leaf.cmu.edu
github:https://github.com/TalwalkarLab/leaf

FEMNIST是FL的Benchmark “LEAF” 里的其中一个开源数据集,该数据集基于EMNIST进行划分,可以选择iid或non-iid的划分方式,non-iid的划分是基于不同writer的,因此能够实现更加贴合实际的non-iid分布。

可以将 leaf 项目 clone 下来,执行 leaf-master/data/femnist 里的 preprocess.sh ,注意文件里的 get_data.sh 会从 amazonaws.com 下载数据集(而该网址正是 NIST SD 19 数据下载的网址),当下载不太顺畅时可以考虑先从网址把这两个数据包下载下来到本地,再把 get_data.sh 中下载数据的两行命令注释掉,再执行 preprocess.sh。

femnist 可以通过设置 preprocess.sh 的参数来实现对数据集的不同划分, preprocess.sh 参数如下:

  • -s:
    • ‘iid’ 设置成为iid分布,在iid的情况下,所有用户会从所有数据中等概率抽样,因此所有用户都服从同一分布。
    • ‘niid’ 设置成为non-iid分布,每个用户的数据分布根据原始数据中的writer来划分,因为假设原始数据中不同writer的分布式不一样的(这里主要还是关于特征分布的偏差,即字体风格),因此按照这种根据writer来划分的方式得到的用户数据分布也是non-iid的。
  • --iu
  • --sf:采样数据量
  • -k:每个用户的最少数据量,低于该数据量的用户将会被删除
  • -t
    • ‘user’ 将用户划分为train/test两种,即有部分用户是训练用户,有部分用户是测试用户
    • ‘sample’ 将每个用户的本地数据集划分为train/test集
  • --tf:训练样本占总数据量的百分比,默认0.9
  • --smplseed:数据采样seed
  • --spltseed:划分数据seed

其他更详细的细节可参考femnist原版markdown。


  1. P. Grother, “NIST special database 19 handprinted forms and characters database,” National Institute of Standards and Technology, Tech. Rep., 1995 ↩︎

  2. P. Grother and K. Hanaoka, “NIST special database 19 handprinted forms and characters 2nd Edition,” National Institute of Standards and Technology, Tech. Rep., 2016. [Online]. Available: http://www.nist.gov/srd/upload/nistsd19.pdf ↩︎

  3. https://www.nist.gov/srd/nist-special-database-19 ↩︎

  4. S. Caldas, et al., “LEAF: A Benchmark for Federated Settings,” 2018,arXiv:1812.01097 ↩︎

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

联邦EMNIST数据集 (FEMNIST) 的相关文章

随机推荐

  • 转:win7系统下安装SQL Server 2005图文教程

    转载链接 https www cnblogs com icewee articles 2019783 html 转载内容如下 操作系统 Microsoft Windows 7 旗舰版 32位 数据库版本 SQL Server 2005 简体
  • TCP/IP五层模型——应用层(HTTP协议、简单的HTTP服务器)

    关于TCP IP模型的简单介绍 在TCP IP五层模型一文中有简单介绍 本文主要详细介绍其中的应用层相关内容 首先介绍一个定义 应用层协议 在网络版加法计算器一文中 我们介绍的实现网络版本的加法计算器有两种方法 其实无论是哪种方法 只要能够
  • python计算身体质量指数_如何用Python计算身体质量指数BMI,并给出胖瘦程度评价?...

    问 身体质量指数 Body Mass Index 简称 BMI 是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准 BMI 值超标 意味着你必须减肥了 BMI 的计算公式是 BMI 体重 千克 身高的平方 米 按照中国人的体质特征 B
  • PPT 各行各业素材 10000套 讲解

    10000套各行各业PPT模板 提供下载 请扫二维码 PPT模板动态工作教育毕业答辩总结教师商务中国风清新简约素材 PPT模板简约风格中国动态模板静态模板唯美清新扁平论文答辩教育 PPT模板工作总结党政机关节日庆典儿童卡通教学课件岗位竞聘
  • 非参数统计吴喜之_看过许多统计教程,这篇是我最推荐的

    01 两组间比较 对于数值变量 首先进行正态性检验 如果各组均满足正态性且两组间方差相等 采用均数 标准差进行统计描述 采用t检验进行组间比较 否则采用中位数 四分位数间距 进行统计描述 采用非参数检验 Mann whitney检验 进行组
  • 【UE4】两个摄像头之间切换

    一 效果展示 二 操作步骤 创建两个摄像机 一个放在场景中 另一个放在Cube上 摄像机的细节面板中约束宽高比 Constrain Aspect Ratio 属性勾选后可以让两个摄像头之间的切换更流畅 但这不是必须的 会用到 include
  • 计算机中的指令跳转

    前言 在上一章中说了 高级语言为什么怎么样成为计算机能够读懂的语言 下面就来说说这些计算机能够读懂的语言中 他们究竟是如何设计的 CPU是如何执行指令的 在我们现实常用的CPU中 有几百亿的晶体管通过电路起来 在逻辑上我们可以认为CPU就是
  • [Pytorch系列-29]:神经网络基础 - 全连接浅层神经网络实现10分类手写数字识别

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 120607797 目录 前言 深度学习
  • Redis部署——主从备份(一)

    1 简单方式 利用Docker完成Redis主从备份 1 先搭建reids master实例 docker run d name redis master p 6379 6379 redis 4 0 9 2 在搭建redis slave实例
  • 代码随想录算法训练营day10

    Leetcode232 用栈实现队列 链接 232 用栈实现队列 力扣 LeetCode 首先大家要知道 队列的模式是先进先出 如下图所示 来自代码随想录 如图所示 这是就是我们题目要求的用两个栈实现队列 我们可以用第一个栈来储存当前队列出
  • Vue Element UI 之富文本图片上传服务器 + 图片地址插入富文本

    vue版本 vue cli3 插件 vue quill editor 插件增强模块 quill image extend module quill image extend module功能 提供图片上传到服j务器的功能 复制插入 显示上传
  • [xenclient 使用小结] [xen] vhdpartx的作用。

    对于硬盘映像vhd的操作 主要是用vhd utils 但是在 usr sbin 目录下 还发现一个 vhdpartx 的工具 看名字似乎和分区有关 但是又没说明 试着运行下 结果也没有任何的输出 貌似也没有任何的影响 网上也找不到任何的描述
  • Spring和mybatis整合

    一 Spring整合MyBatis 1 导入pom依赖 1 1 添加spring相关依赖 5 0 2 RELEASE spring core spring beans spring context spring orm spring tx
  • 管好【SD-WEBUI】中大量的模型:名称+预览图+备注+分组管理

    文章目录 零 前言 一 模型管理 1 1 模型名称 文件名 1 2 模型缩略图 1 3 模型备注文字 1 4 模型分组 子目录 1 5 模型详细信息 二 第二部分 三 第三部分 零 前言 本篇主要讲怎么管理大量的模型 比如模型不要大幅改名
  • 使用Struts2的JSON插件来实现JSON数据传递

    想要实现此功能第一步需要Struts2的核心架包 第二步需要struts2 json plugin 2 3 30架包 在lib文件夹下可以找到 还是借用上次的笔记 来继续写 这个时候我们就不需要用到Servlet了 要使用到Action 配
  • 自学python入门要买什么书?

    文章目录 1 Python编程 从入门到实践 2 Python编程快速上手 让繁琐工作自动化 3 Python基础教程 第3版 4 Python核心编程 第3版 5 Python 3网络爬虫开发实战 6 Python神经网络编程 自学pyt
  • g++编译详解

    g 编译详解 资料准备 为了方便演示和讲解 在这里提前准备好几个简单的文件 test cpp test h main cpp 文件内容如下 main cpp include test h int main int argc char arg
  • 华为OD机试 - 组装新的数组(Java)

    题目描述 给你一个整数M和数组N N中的元素为连续整数 要求根据N中的元素组装成新的数组R 组装规则 R中元素总和加起来等于M R中的元素可以从N中重复选取 R中的元素最多只能有1个不在N中 且比N中的数字都要小 不能为负数 输入描述 第一
  • php常用插件

    初衷 以下总结了一些开发中发现以及用到的比较好用的扩展 会不断地进行更新 如果有好的扩展推荐 也可以留言我会及时补充上 方便自己和大家使用 更新说明 2019年11月11日更新 添加 php 文件加密扩展 2019年10月28日更新 添加
  • 联邦EMNIST数据集 (FEMNIST)

    文章目录 Introduction NIST Special Database 19 Modified NIST MNIST Extended MNIST EMNIST Federated Extended MNIST FEMNIST fe