机器学习的入门,一般都是从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语言中的数组一样存储。例如,最后一维的变化最快。
=============================================================================
闲话少叙,书归正传,下面开练。
传统开场白
导入需要的模块
我已经将训练集和测试集的四个文件从