就像无数人从敲下“Hello World”开始代码之旅一样,许多研究员从“MNIST数据集”开启了人工智能的探索之路。

MNIST数据集(Mixed National Institute of Standards and Technology database)是一个用来训练各种图像处理系统的二进制图像数据集,广泛应用于机器学习中的训练和测试。

作为一个入门级的计算机视觉数据集,发布20多年来,它已经被无数机器学习入门者“咀嚼”千万遍,是最受欢迎的深度学习数据集之一。

今天就让我们来一睹真容。

目录

一、数据集简介

二、数据集详细信息

三、数据集任务定义及介绍

图像分类

四、数据集文件结构解读

五、数据集下载链接


一、数据集简介

发布方:National Institute of Standards and Technology(美国国家标准技术研究所,简称NIST)

发布时间:1998

背景:

该数据集的论文想要证明在模式识别问题上,基于CNN的方法可以取代之前的基于手工特征的方法,所以作者创建了一个手写数字的数据集,以手写数字识别作为例子证明CNN在模式识别问题上的优越性。

简介:

MNIST数据集是从NIST的两个手写数字数据集:Special Database 3 和Special Database 1中分别取出部分图像,并经过一些图像处理后得到的。

MNIST数据集共有70000张图像,其中训练集60000张,测试集10000张。所有图像都是28×28的灰度图像,每张图像包含一个手写数字。

二、数据集详细信息

1. 数据量

训练集60000张图像,其中30000张来自NIST的Special Database 3,30000张来自NIST的Special Database 1。

测试集10000张图像,其中5000张来自NIST的Special Database 3,5000张来自NIST的Special Database 1。

2. 标注量

每张图像都有标注。

3. 标注类别

共10个类别,每个类别代表0~9之间的一个数字,每张图像只有一个类别。

4. 可视化

图1:MNIST样例图

NIST原始的Special Database 3 数据集和Special Database 1数据集均是二值图像,MNIST从这两个数据集中取出图像后,通过图像处理方法使得每张图像都变成28×28大小的灰度图像,且手写数字在图像中居中显示。

三、数据集任务定义及介绍

图像分类

● 图像分类定义

图像分类是计算机视觉领域中,基于语义信息对不同图像进行分类的一种模式识别方法。

● 图像分类评价指标

a. Accuracy:

n_correct / n_total,标签预测正确的样本占所有样本的比例。

b. 某个类别的Precision:

TP/(TP+FP),被预测为该类别的样本中,有多少样本是预测正确的。

c. 某个类别的Recall:

TP/(TP+FN),在该类别的样本中,有多少样本是预测正确的。

注:在上面的评价指标中,TP代表True Positive,FP代表False Positive,FN代表False Negative,n_correct代表所有预测正确的样本数量,n_total代表所有的样本数量。

四、数据集文件结构解读

1. 目录结构

● 解压前

dataset_compressed/
├── t10k-images-idx3-ubyte.gz                #测试集图像压缩包(1648877 bytes)
├── t10k-labels-idx1-ubyte.gz                #测试集标签压缩包(4542 bytes)
├── train-images-idx3-ubyte.gz                #训练集图像压缩包(9912422 bytes)
└── train-labels-idx1-ubyte.gz                #训练集标签压缩包(28881 bytes)

● 解压后

dataset_uncompressed/
├── t10k-images-idx3-ubyte                #测试集图像数据
├── t10k-labels-idx1-ubyte                #测试集标签数据
├── train-images-idx3-ubyte                #训练集图像数据
└── train-labels-idx1-ubyte                #训练集标签数据

2. 文件结构

该数据集将图像和标签都以矩阵的形式存储于一种称为idx格式的二进制文件中。该数据集的4个二进制文件的存储格式分别如下:

● 训练集标签数据 (train-labels-idx1-ubyte):

偏移量(bytes)

值类型

数值

含义

0

32位整型

0x00000801

(2049)

magic number

4

32位整型

60000

有效数值的数量

(即标签的数量)

8

8位无符号整型

不定

(0~9之间)

标签

...

...

...

...

xxxx

8位无符号整型

不定

(0~9之间)

标签

● 训练集图像数据(train-images-idx3-ubyte):

偏移量(bytes)

值类型

数值

含义

0

32位整型

0x00000803

(2051)

magic number

4

32位整型

60000

有效数值的数量

(即图像的数量)

8

32位整型

28

图像的高

(rows)

12

32位整型

28

图像的宽

(columns)

16

8位无符号整型

不定

(0~255之间)

图像内容

...

...

...

...

xxxx

8位无符号整型

不定

(0~255之间)

图像内容

● 测试集标签数据(t10k-labels-idx1-ubyte):

偏移量(bytes)

值类型

数值

含义

0

32位整型

0x00000801

(2049)

magic number

4

32位整型

10000

有效数值的数量

(即标签的数量)

8

8位无符号整型

不定

(0~9之间)

标签

...

...

...

...

xxxx

8位无符号整型

不定

(0~9之间)

标签

● 测试集图像数据 (t10k-images-idx3-ubyte):

偏移量(bytes)

值类型

数值

含义

0

32位整型

0x00000803

(2051)

magic number

4

32位整型

10000

有效数值的数量

(即图像的数量)

8

32位整型

28

图像的高

(rows)

12

32位整型

28

图像的宽

(columns)

16

8位无符号整型

不定

(0~255之间)

图像内容

...

...

...

...

xxxx

8位无符号整型

不定

(0~255之间)

图像内容

对于idx格式的二进制文件,其基本格式如下:


magic number
size in dimension 0
size in dimension 1
size in dimension 2
.....
size in dimension N
data

每个idx文件都以magic number开头,magic number是一个4个字节,32位的整数,用于说明该idx文件的data字段存储的数据类型。

其中前两个字节总是0,第3个字节不同的取值代表了idx文件中data部分不同的数值类型,对应关系如下:

取值

含义

0x08

8位无符号整型(unsigned char, 1 byte)

0x09

8位有符号整型(char, 1 byte)

0x0B

短整型(short, 2 bytes)

0x0C

整型 (int, 4 bytes)

0x0D

浮点型 (float, 4 bytes)

0x0E

双精度浮点型 (double, 8 bytes)

在MNIST数据集的4个二进制文件中,data部分的数值类型都是“8位无符号整型”,所以magic number的第3个字节总是0x08。

magic number的第4个字节代表其存储的向量或矩阵的维度。比如存储的是一维向量,那么magic number的第4个字节是0x01,如果存储的是二维矩阵,那么magic number的第4个字节就是0x02。

所以在MNIST数据集的4个二进制文件中,标签文件的magic number第4个字节都是0x01,而在图像文件中,因为一张图像的维度是2,而多张图像拼成的矩阵维度是3,所以图像文件magic number第4个字节都是0x03。

该数据集的官网说明了4个二进制文件中的整型数据是以大端方式 (MSB first) 存储的,所以在读取这4个二进制文件的前面几个32位整型数据时,需要注意声明数据存储格式是大端还是小端。

五、数据集下载链接

数据集下载

OpenDataLab平台为大家提供了完整的数据集信息、直观的数据分布统计、流畅的下载速度、便捷的可视化脚本,欢迎体验。点击原文链接查看。

https://opendatalab.com/MNIST

参考资料

[1]Y LeCun,L Bottou,Y Bengio,etal.Gradient-based learning applied to document recognition[J].Proceedings of the IEEE,1998,86(11):2278-2324.

[2]http://yann.lecun.com/exdb/mnist/

从手写数字识别入门深度学习丨MNIST数据集详解相关推荐

  1. 读书笔记-深度学习入门之pytorch-第五章(含循环实现手写数字识别)(LSTM、GRU代码详解)

    目录 1.RNN优点:(记忆性) 2.循环神经网络结构与原理 3.LSTM(长短时记忆网络) 4.GRU 5.LSTM.RNN.GRU区别 6.收敛性问题 7.循环神经网络Pytorch实现 (1)R ...

  2. 利用python卷积神经网络手写数字识别_Keras深度学习:卷积神经网络手写数字识别...

    引言:最近在闭关学习中,由于多久没有写博客了,今天给大家带来学习的一些内容,还在学习神经网络的同学,跑一跑下面的代码,给你一些自信吧!Nice 奥里给! 正文:首先该impor的库就不多说了,不会的就 ...

  3. 手写数字识别之联邦学习

    TFF介绍  TensorFlow Federated(TFF)是一个开源框架,用于机器学习和其他对分散数据的计算. TFF的开发旨在促进联邦学习(FL)的开放式研究和实验,该方法是一种机器学习方法, ...

  4. 【FPGA教程案例100】深度学习1——基于CNN卷积神经网络的手写数字识别纯Verilog实现,使用mnist手写数字数据库

    FPGA教程目录 MATLAB教程目录 ---------------------------------------- 目录 1.软件版本 2.CNN卷积神经网络的原理 2.1 mnist手写数字数 ...

  5. mnist手写数字识别python_基于tensorflow的MNIST手写数字识别(二)--入门篇

    一.本文的意义 因为谷歌官方其实已经写了MNIST入门和深入两篇教程了,那我写这些文章又是为什么呢,只是抄袭?那倒并不是,更准确的说应该是笔记吧,然后用更通俗的语言来解释,并且补充更多,官方文章中没有 ...

  6. pytorch实现手写数字识别_Paddle和Pytorch实现MNIST手写数字集识别对比

    一.简介 1. Paddle PaddlePaddle是百度自主研发的集深度学习核心框架.工具组件和服务平台为一体的技术领先.功能完备的开源深度学习平台,有全面的官方支持的工业级应用模型,涵盖自然语言 ...

  7. 【从零开始】手写数字识别降维可视化学习笔记

    代码 # coding: utf-8from sklearn.neural_network import MLPClassifier from sklearn.datasets import load ...

  8. TensorFlow8-mnist手写数字识别入门

    分类问题的损失函数为什么一般不用MSE?MSE在逻辑回归中可能具有多个局部最优点 不能用梯度下降算法

  9. keras手写数字识别--入门

    程序 由于mnist数据集直接使用 (x_train, y_train), (x_test, y_test) = mnist.load_data() 这种加载方式,有时候由于网络原因,很难加载成功.为 ...

最新文章

  1. java maven 读写pdf_java读取pdf内容
  2. Java TreeMap 和 TreeSet 源码解析
  3. mysql_select按照指定的格式输出到文件
  4. HTML5 Maker – 在线轻松制作 HTML5 动画效果
  5. 简单json语句转化为map保存
  6. 五大经典算法之动态规划
  7. html中的容器和语义标签
  8. matebook13linux送U盘系统,HUAWEI MateBook 13笔记本U盘安装win10系统的操作教程
  9. 10-9 重要的内置函数(zip、filter、map、sorted)
  10. jq鼠标隐藏显示的方法
  11. Linux 开源 ssh 工具,【原创开源】jssh linux scp ssh 免密登录工具
  12. ICMPV6协议及NDP协议
  13. Oracle 通过出生日期计算年龄
  14. 关于我的一些学习感悟
  15. 简单体验阿里巴巴在线java诊断工具Arthas
  16. 2022年最新陕西水利水电施工安全员考试题库及答案
  17. go语言negroni包介绍
  18. java获取日期/时间
  19. Android AudioFocus机制小结
  20. mindmanager 2021许可密钥全新可视工作管理和思维导图软件

热门文章

  1. Java开发工具之社区版IDEA的安装使用
  2. 吴昊品游戏核心算法 Round 16 —— 吴昊教你玩口袋妖怪 第十弹 超能力系道馆
  3. PC虚拟机+树莓派摄像头运行ORB-SLAM2命令流程
  4. javascript之url转义escape()、encodeURI()和decodeURI()
  5. 2023 易语言 抖音快手直播源获取推流地址源码
  6. 新北洋SNBC BTP-M180II 打印机驱动
  7. IIS服务器下如何支持url重写
  8. 机电一体化技术及其应用研究
  9. [渝粤教育] 新乡医学院 计算机基础 参考 资料
  10. 幕马图城: 哪款软件容易上手,顺便能赚零花钱