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

这篇具有很好参考价值的文章主要介绍了从手写数字识别入门深度学习丨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. 可视化

mnist数据集,数据集解读,手写字符识别,深度学习,计算机视觉,人工智能

图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/文章来源地址https://www.toymoban.com/news/detail-780063.html

到了这里,关于从手写数字识别入门深度学习丨MNIST数据集详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TensorFlow进行MNIST数据集手写数字识别,保存模型并且进行外部手写图片测试

    首先,你已经配置好Anaconda3的环境,下载了TensorFlow模块,并且会使用jupyter了,那么接下来就是MNIST实验步骤。 数据集官网下载: MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges http://yann.lecun.com/exdb/mnist/   将上面四个全部下载,都是数据集,其中前两个是训练集,

    2024年02月08日
    浏览(39)
  • 入门深度学习——基于全连接神经网络的手写数字识别案例(python代码实现)

    1.1 问题导入 如图所示,数字五的图片作为输入,layer01层为输入层,layer02层为隐藏层,找出每列最大值对应索引为输出层。根据下图给出的网络结构搭建本案例用到的全连接神经网络 1.2 手写字数据集MINST 如图所示,MNIST数据集是机器学习领域中非常经典的一个数据集,由6

    2024年02月03日
    浏览(46)
  • 机器学习第一周:用卷积神经网络实现Mnist手写数字识别(付基础知识解释)

    MNIST 数据集是一个手写数字识别数据集,包含了 60000 张训练图像和 10000 张测试图像,每张图像都是 28x28 像素的灰度图像。 在这个代码中,我们首先使用了 numpy 库中的 np.random.seed() 方法来设置随机种子,以确保结果可重复。 然后,我们使用了 Keras 中的 mnist.load_data() 方法来

    2024年02月08日
    浏览(43)
  • 【Pytorch+torchvision】MNIST手写数字识别

    深度学习入门项目,含代码详细解析 在本文中,我们将在 PyTorch 中构建一个简单的卷积神经网络,并使用 MNIST数据集 训练它识别手写数字。 MNIST包含70,000张手写数字图像: 60,000张用于培训,10,000张用于测试。图像是 灰度(即通道数为1) , 28x28像素 ,并且居中的,以减少预

    2024年02月14日
    浏览(40)
  • 【机器学习】VAE算法的pytorch实现-MNIST手写数据识别

    序言 承接上文 VAE变分自编码器学习笔记 一文介绍了VAE算法的设计思路、原理、公式推导以及作者本人对VAE模型的理解 这里继续就VAE算法的实现进行学习,为模型能够应用到工作中做准备 1. 环境配置 (1)我们使用pytorch来训练模型,首先导入必要的库(模块module、包package)

    2024年02月13日
    浏览(48)
  • FPGA实现mnist手写数字识别(软件部分)

    使用的环境:tf1.12,具体配置见here: 首先打开环境tf1.12,,再安装以下的包: opencv 在这里下载“linux-64/opencv3-3.1.0-py36_0.tar.bz2”,通过共享文件夹copy到download文件夹中,在文件夹下打开终端,输入以下命令进行安装: matplotlib(时刻注意是py36) Pillow(貌似不用了,上面已经安

    2023年04月15日
    浏览(79)
  • 人工智能TensorFlow MNIST手写数字识别——实战篇

    上期文章TensorFlow手写数字-训练篇,我们训练了我们的神经网络,本期使用上次训练的模型,来识别手写数字(本期构建TensorFlow神经网络代码为上期文章分享代码) http://scs.ryerson.ca/~aharley/vis/conv/ 0、插入第三方库 1、图片处理函数

    2024年02月15日
    浏览(59)
  • 用PyTorch实现MNIST手写数字识别(最新,非常详细)

    本文基于 PyTorch 框架,采用 CNN卷积神经网络 实现 MNIST 手写数字识别,仅在 CPU 上运行。 已分别实现使用Linear纯线性层、CNN卷积神经网络、Inception网络、和Residual残差网络四种结构对MNIST数据集进行手写数字识别,并对其识别准确率进行比较分析。(另外三种还未发布) 看完

    2024年02月06日
    浏览(36)
  • 【youcans动手学模型】LeNet 模型 MNIST 手写数字识别

    欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 本文用 PyTorch 实现 LeNet5 网络模型,使用 MNIST 数据集训练模型,进行手写数字识别。 Yann LeCun (2018年获得图灵奖)等在 1998 年发表论文“Gradient-Based Learning Applied to Document Recognition”,提出的 LeNet5 模型是

    2024年02月06日
    浏览(44)
  • (神经网络)MNIST手写体数字识别MATLAB完整代码

            在此次实验中,笔者针对 MNIST 数据集,利用卷积神经网络进行训练与测试,提 出了一系列的改进方法,并对这些改进的方法进行了逐一验证,比较了改进方法与浅层 神经网络的优劣。         首先,笔者对实验中所用的 MNIST 数据集进行了简单的介绍;接着,

    2024年02月03日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包