算法研究---MNIST数据集

2023-11-14

MNIST简介

MNIST(Mixed National Institute of Standards and Technology database)是一个计算机视觉数据集,它包含70000张手写数字的灰度图片,其中每一张图片包含 28 X 28 个像素点。

 

每一张图片都有对应的标签,也就是图片对应的数字,例如上面这张图片的标签就是 1。

数据集格式:

60000行的训练数据集是一个形状为 [60000, 784] 的张量,第一个维度数字用来索引图片,第二个维度数字用来索引每张图片中的像素点。在此张量里的每一个元素,都表示某张图片里的某个像素的强度值,值介于 0 和 1 之间。每一个像素点用一个utf-8来表示。范围是0~255,0表示是黑色(背景色),255表示白色(前景色)

深度学习æ°æ®éMNIST

标签集格式(???):

60000行的训练数据标签集是一个形状为 [60000, 10] 的张量。采用one-hot vectors来表示0~9之间数字,从0开始到9,总共10个位置。一个one-hot向量是[1,10]的张量,每一次只有一个维度上面的数字是1,其他各个维度的数字都为0。数字n表示为一个只有在第n个维度为1的1*10的向量。表示如下:

60000行的训练数据标签集是一个形状为[60000,1]的张量。每个维度表示对应的标签值,标签的访问是0~9。

 

下载

MNIST下载地址:http://yann.lecun.com/exdb/mnist/, 从官方网站下载的数据是gz格式的压缩包,解压后可以得到原始文件。mnist数据集包含4个文件,分别对应60000个训练图片,60000个训练标签,10000个测试图片,10000个测试标签。数据集被分成两部分:60000 行的训练数据集(mnist.train)和10000行的测试数据集(mnist.test)。其中:60000 行的训练集分拆为 55000 行的训练集和 5000 行的验证集。

train-images-idx3-ubyte.gz: 60000个训练图片 (9912422 bytes)
train-labels-idx1-ubyte.gz: 60000个训练标签 (28881 bytes)
t10k-images-idx3-ubyte.gz: 10000个测试图片 (1648877 bytes)
t10k-labels-idx1-ubyte.gz: 10000个测试标签 (4542 bytes)

文件格式

train-images-idx3-ubyte.gz解压之后会生成一个train-images.idx3-ubyte的文件。该文件的格式如下:

Pixels are organized row-wise. Pixel values are 0 to 255. 0 means background (black), 255 means foreground (white). 

train-labels-idx1-ubyte.gz解压之后,会生成train-labels.idx1-ubyte的文件,文件格式如下:

The labels values are 0 to 9.

t10k-images-idx3-ubyte.gz解压之后,会生成一个t10k-images.idx3-ubyte的文件,其格式如下:

Pixels are organized row-wise. Pixel values are 0 to 255. 0 means background (black), 255 means foreground (white). 

t10k-labels-idx1-ubyte.gz解压之后,生成t10k-labels.idx1-ubyte的文件,格式如下:

The labels values are 0 to 9.

MNIST数据预处理

基于上个章节中提到的4个文件的数据格式,我们可以将data进行预处理,分割出图像文件出来。

在处理binary数据之前,需要特别注意的是MNIST数据集是采用大端格式(高字节优先,即数字0x01020304在内存中存储的情况是(从低地址到高地址)0x01,0x02,0x03,0x04)。

import numpy as np
import struct
import matplotlib.pyplot as plt
import time as time

TrainImgfilename = r'/home/yml/桌面/mnist/train-images.idx3-ubyte'
TIbinfile = open(TrainImgfilename,'rb')
TIbuf = TIbinfile.read()

TrainLabelFileName = r'/home/yml/桌面/mnist/train-labels.idx1-ubyte'
TLbinfile = open(TrainLabelFileName,'rb')
TLbuf = TLbinfile.read()

TIindex = 0
TLindex = 0

TImagic,TInumImages,TInumRows,TInumColumn = struct.unpack_from('>IIII',TIbuf,TIindex)
TIindex += struct.calcsize('>IIII')

TLmagic,TLnumLabel = struct.unpack_from('>II',TLbuf,TLindex)
TLindex += struct.calcsize('>II')

fig = plt.figure()
plotwindow = fig.add_subplot(111)
for i in range(TInumImages):
        im = struct.unpack_from('>784B',TIbuf,TIindex)
        TIindex += struct.calcsize('>784B')
        im = np.array(im)
        im = im.reshape(28,28)

        label = struct.unpack_from('>B', TLbuf,TLindex)
        TLindex += struct.calcsize('>B')
        print(label)
        label = label[0]


        plt.title('true number :%d'%label)
        plt.axis('off')
        plt.imshow(im,cmap='gray')
        plt.pause(1)
TIbinfile.close()
TLbinfile.close()
plt.close()

参考文献

【1】https://blog.csdn.net/chekongfu/article/details/85555389

【2】https://yq.aliyun.com/ziliao/550948

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

算法研究---MNIST数据集 的相关文章

随机推荐

  • 十三、Redis——最佳实践(Redis时参考的经验总结)

    目录 1 Redis健值设计 1 1 优雅的key结构 1 2 拒绝BigKey 1 2 1 BigKey的危害 1 2 2 如何发现BigKey 1 2 3 如何删除BigKey 1 3 恰当的数据类型 编辑 总结 2 批处理优化 2 1
  • R语言第五次实训,dplyr 、tidyr和lubridate处理数据

    题目1 1 数据处理 只用SY 20150401 csv 将数据处理成每条数据处于一天中的第几个5分钟 说明 00 00 01在第一个5分钟内 00 10 13 在第三个5分钟内 由于一天可能多次乘坐地铁 根据卡号和进站时间 查询最近出站的
  • 软复位与硬复位

    软复位与硬复位 1 软复位与硬复位 软复位信号名称中通常包含soft 硬复位信号名称中通常包含hard 软复位 常用于复位逻辑模块 硬复位 常用于配置寄存器模块 配置信号同步模块 硬复位有效会驱动软复位有效 一个模块出现问题时 可以使其软复
  • 物联网实训总结——简易的智能农场

    物联网实训总结 简易的智能农场 一 场景需求 1 农场环境监测 对农场的环境实现智能感知 对温度 湿度 光照值实时显示 同时检测农场烟雾状态 判断火情 实时监控农场人员出现情况 2 控制管理 智能农场控制部分分为 通风系统和补光系统 实现对
  • PAT Basic Level 1002 写出这个数

    import java util Scanner author djch date 2021 5 21 public class Main public static void main String args Scanner scanne
  • 多目录CMAKE文件的编写

    前言 对于单文件来说一个CMakeLists txt文件即可 但是大多数项目的文件都不可能只有一个文件 因此介绍下在多目录下CMakeLists xtx文件是如何编写的 思考 对于多目录CMAKE文件的编写应该怎样写呢 我们知道单目录文件只
  • RuoYi-Vue项目登录过期的实现

    登录逻辑 登录验证 param username 用户名 param password 密码 param code 验证码 param uuid 唯一标识 return 结果 public String login String usern
  • 分库分表实战之流量激增带来的技术挑战

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 前 言 接上期 到现在为止 我们已经对订单系统核心接口业务流程有了一定的了解 此时我们可以接一些简单的需求做了 同时这个时候 也会有对应的产品经理来和我们对接需求 一
  • Ubuntu下使用摄像头遇到的问题

    VIDEOIO ERROR V4L can t open camera by index 1 我在Linux下使用opencv库调用摄像头cvCreateCameraCapture 0 时出现该错误 原因是在 dev下video0变成了vi
  • 目标检测之YOLOv2算法分析

    要点 Batch Normalization 训练 若batchsize 64 某一层的某一个神经元会输出64个响应值 对这64个响应值求均值 标准差 然后标准化 对标准化的结果乘 lambda beta 其中
  • Cannot find template location: classpath:/templates/ (please add some templates or check your Thymel

    springboot配置了 thymeleaf 启动warning Cannot find template location classpath templates please add some templates or check y
  • 抓包相关,抓包学习

    检查网络流量 提琴手经典 telerik com Headers Reference Fiddler Classic telerik com 以上是fiddler官方文档 F12要勾选保留日志 不勾选的话跳转到新页面之前页面的日志不会在下方
  • 02-407控制底板PCB开发板资源介绍资料

    核心板 控制底板 反客 DIY 1 芯片介绍 stm32F407ZGT6 开发指南 产品 见淘宝 反客科技 核心板并没有使用STM32F407开发指南上的 因为它贵且许多功能没有用到 所以就使用反客的 芯片的一样 没事 开发板是李明枫老师画
  • C语言计算1-100之间的素数

    要计算素数 我们首先要明白素数的性质 也就是我们数学上的质数其实是一样的啦 素数 只能被一和它本身整除的数 这里提一下1既不是质数也不是合数 感觉想把自己说得话注释也挺难的哈 挺多地方写的应该看不懂吧反正我自己也有点看不懂自己写的啥哈哈 运
  • 这7个GitHub高级搜索技巧,你知道吗?

    前言 GitHub作为全球最大的同性交友 代码托管 平台 里面藏着巨大的资源宝库 一套Ctrl C和Ctrl V组合拳打出来 就没有你实现不了的需求 好了 废话不多说 下面介绍7个GitHub搜索高级技巧 让资源搜索不再困难 关键字 in
  • JPA——Date拓展之Calendar

    Java Calendar 是时间操作类 Calendar 抽象类定义了足够的方法 在某一特定的瞬间或日历上 提供年 月 日 小时之间的转换提供方法 一 获取具体时间信息 1 当前时间 获取此刻时间的年月日时分秒 Calendar cale
  • python卸载_可能是全网最详细的 Python 安装教程(windows)

    Python 是这两年来比较流行的一门编程语言 主要卖点是其相对简单的语法以及丰富的第三方库 下面我来带大家安装 配置 Python 文章最后有各种疑难杂症的解决方法 大体步骤有两步 安装 Python 让电脑学会这门语言 配置编辑器 方便
  • 让chatGPT回答一些有趣?无聊的问题

    本来我是没有国外的手机号的 也就没法注册chatGPT并使用 不过好在 csdn 的猿如意 里面有体验功能 我就顺便体验一下 这一次主要是看看chatGPT能否理解我的目的 很可惜 这一次并没有 其实第一次 chatGPT准确的回答出了 自
  • 算法导论 练习 2.2

    2 2 1 答案 n theta n 渐进符号的定义会在第三章里明确给出 所以这里就不写证明了 详细证明见第三章习题 好多好多啊 2 2 2 选择排序 数据结构课程基本排序算法之一 代码 SELECTION SORT A n length
  • 算法研究---MNIST数据集

    MNIST简介 MNIST Mixed National Institute of Standards and Technology database 是一个计算机视觉数据集 它包含70000张手写数字的灰度图片 其中每一张图片包含 28