从手写数字识别入门深度学习丨MNIST数据集详解
就像无数人从敲下“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数据集详解相关推荐
- 读书笔记-深度学习入门之pytorch-第五章(含循环实现手写数字识别)(LSTM、GRU代码详解)
目录 1.RNN优点:(记忆性) 2.循环神经网络结构与原理 3.LSTM(长短时记忆网络) 4.GRU 5.LSTM.RNN.GRU区别 6.收敛性问题 7.循环神经网络Pytorch实现 (1)R ...
- 利用python卷积神经网络手写数字识别_Keras深度学习:卷积神经网络手写数字识别...
引言:最近在闭关学习中,由于多久没有写博客了,今天给大家带来学习的一些内容,还在学习神经网络的同学,跑一跑下面的代码,给你一些自信吧!Nice 奥里给! 正文:首先该impor的库就不多说了,不会的就 ...
- 手写数字识别之联邦学习
TFF介绍 TensorFlow Federated(TFF)是一个开源框架,用于机器学习和其他对分散数据的计算. TFF的开发旨在促进联邦学习(FL)的开放式研究和实验,该方法是一种机器学习方法, ...
- 【FPGA教程案例100】深度学习1——基于CNN卷积神经网络的手写数字识别纯Verilog实现,使用mnist手写数字数据库
FPGA教程目录 MATLAB教程目录 ---------------------------------------- 目录 1.软件版本 2.CNN卷积神经网络的原理 2.1 mnist手写数字数 ...
- mnist手写数字识别python_基于tensorflow的MNIST手写数字识别(二)--入门篇
一.本文的意义 因为谷歌官方其实已经写了MNIST入门和深入两篇教程了,那我写这些文章又是为什么呢,只是抄袭?那倒并不是,更准确的说应该是笔记吧,然后用更通俗的语言来解释,并且补充更多,官方文章中没有 ...
- pytorch实现手写数字识别_Paddle和Pytorch实现MNIST手写数字集识别对比
一.简介 1. Paddle PaddlePaddle是百度自主研发的集深度学习核心框架.工具组件和服务平台为一体的技术领先.功能完备的开源深度学习平台,有全面的官方支持的工业级应用模型,涵盖自然语言 ...
- 【从零开始】手写数字识别降维可视化学习笔记
代码 # coding: utf-8from sklearn.neural_network import MLPClassifier from sklearn.datasets import load ...
- TensorFlow8-mnist手写数字识别入门
分类问题的损失函数为什么一般不用MSE?MSE在逻辑回归中可能具有多个局部最优点 不能用梯度下降算法
- keras手写数字识别--入门
程序 由于mnist数据集直接使用 (x_train, y_train), (x_test, y_test) = mnist.load_data() 这种加载方式,有时候由于网络原因,很难加载成功.为 ...
最新文章
- java maven 读写pdf_java读取pdf内容
- Java TreeMap 和 TreeSet 源码解析
- mysql_select按照指定的格式输出到文件
- HTML5 Maker – 在线轻松制作 HTML5 动画效果
- 简单json语句转化为map保存
- 五大经典算法之动态规划
- html中的容器和语义标签
- matebook13linux送U盘系统,HUAWEI MateBook 13笔记本U盘安装win10系统的操作教程
- 10-9 重要的内置函数(zip、filter、map、sorted)
- jq鼠标隐藏显示的方法
- Linux 开源 ssh 工具,【原创开源】jssh linux scp ssh 免密登录工具
- ICMPV6协议及NDP协议
- Oracle 通过出生日期计算年龄
- 关于我的一些学习感悟
- 简单体验阿里巴巴在线java诊断工具Arthas
- 2022年最新陕西水利水电施工安全员考试题库及答案
- go语言negroni包介绍
- java获取日期/时间
- Android AudioFocus机制小结
- mindmanager 2021许可密钥全新可视工作管理和思维导图软件
热门文章
- Java开发工具之社区版IDEA的安装使用
- 吴昊品游戏核心算法 Round 16 —— 吴昊教你玩口袋妖怪 第十弹 超能力系道馆
- PC虚拟机+树莓派摄像头运行ORB-SLAM2命令流程
- javascript之url转义escape()、encodeURI()和decodeURI()
- 2023 易语言 抖音快手直播源获取推流地址源码
- 新北洋SNBC BTP-M180II 打印机驱动
- IIS服务器下如何支持url重写
- 机电一体化技术及其应用研究
- [渝粤教育] 新乡医学院 计算机基础 参考 资料
- 幕马图城: 哪款软件容易上手,顺便能赚零花钱