机器学习的入门,一般都是从MNIST数据库上进行手写识别开始的。
MNIST数据集作为一个简单的计算机视觉数据集,包含一系列手写数字图片和对应的标签。图片是28x28的像素矩阵,标签则对应着0~9的10个数字。每张图片都经过了大小归一化和居中处理。
而MNIST数据库的文件格式是IDX格式,常见的计算机软件无法识别,参考《使用Python解析MNIST数据集(IDX文件格式)》,改编出一个程序,可以直观看出图像和标签。我的调试环境:win10/Anaconda3/Jupyter Notebook/Python3
=====================
IDX文件的格式
基本格式如下:
幻数(magic number)
0维的大小
1维的大小
2维的大小
...
N维的大小
数据(data)...
幻数是最高位有效位在前(MSB firt)的四字节整型数。
前两个字节为0。
第三个字节指明了数据(the data)的类型:
0x08 无符号的字节型 (8bit)
0x09 有符号的字节型 (8bit)
0x0B 短整型 (16bit)
0x0C 整型 (32bit)
0x0D 浮点型 (32bit)
0x0E 双精度浮点型 (64bit)
第四个字节指明向量或矩阵的维度:
1 向量
2 矩阵
...
每一个维度的大小都用4字节的整型数表示。最高有效位在前(MSB first)、大端(high endian)。
数据(the data)向C语言中的数组一样存储。例如,最后一维的变化最快。
=============================================================================
闲话少叙,书归正传,下面开练。
传统开场白

导入需要的模块

我已经将训练集和测试集的四个文件从 http://yann.lecun.com/exdb/mnist/ 下载并解压到和本程序相同的目录下。

提供文件名和路径:

解析IDX3文件
IDX3图形文件的格式说明如下:
训练集图形文件 (train-images-idx3-ubyte):
偏移量 数据类型 值 说明
0000 32 bit integer 0x00000803(2051) 幻数
0004 32 bit integer 60000 图片
MNIST数据集解析与图像显示

这篇博客详细解析了MNIST数据集的IDX文件格式,包括IDX3图像文件和IDX1标签文件的结构,并提供了Python解析代码。博主介绍了如何加载和显示MNIST图像,使用matplotlib库展示图像,并给出了一个随机图像的例子。
最低0.47元/天 解锁文章
1986

被折叠的 条评论
为什么被折叠?



