文章目录
MNIST数据集简介
MNIST是一个手写数字的数据库,它由一个包含有60000个样本的训练集和一个包含有10000个样本的测试集组成。数据集中所有的手写数字都已经被标准化,并且以固定大小的图像形式保存。
完整数据集可从MNIST数据集的官网THE MNIST DATABASE of handwritten digits上进行下载。
下载完成后,解压即可得到我们所需的数据集。
MNIST数据集文件格式
数据集用字节形式进行存储,采用MSB(Most Significant Bit) first模式,即大端模式。
MNIST数据集由四个文件组成:
文件名 | 说明 |
---|---|
train-images-idx3-ubyte | 训练集图片 |
train-labels-idx1-ubyte | 训练集标签 |
t10k-images-idx3-ubyte | 测试集图片 |
t10k-labels-idx1-ubyte | 测试集标签 |
train-images-idx3-ubyte
字节偏移量 | 数据类型 | 数值 | 说明 |
---|---|---|---|
0000 | 32 bit integer | 0x00000803(2051) | 魔数 |
0004 | 32 bit integer | 60000 | 图片数量 |
0008 | 32 bit integer | 28 | 图片像素的行数(row) |
0012 | 32 bit integer | 28 | 图片像素的列数(column) |
0016 | unsigned byte | ?? | 像素的值 |
0017 | unsigned byte | ?? | 像素的值 |
… | … | … | … |
xxxx | unsigned byte | ?? | 像素的值 |
像素按行排列。 像素值为0到255。0表示背景(白色),255表示前景(黑色)。
train-labels-idx1-ubyte
字节偏移量 | 数据类型 | 数值 | 说明 |
---|---|---|---|
0000 | 32 bit integer | 0x00000801(2049) | 魔数 (MSB first) |
0004 | 32 bit integer | 60000 | 标签数量 |
0008 | unsigned byte | ?? | 标签值 |
0009 | unsigned byte | ?? | 标签值 |
… | … | … | … |
xxxx | unsigned byte | ?? | 标签值 |
标签的值为0到9的整数。
t10k-images-idx3-ubyte
字节偏移量 | 数据类型 | 数值 | 说明 |
---|---|---|---|
0000 | 32 bit integer | 0x00000803(2051) | 魔数 |
0004 | 32 bit integer | 10000 | 图片数量 |
0008 | 32 bit integer | 28 | 图片像素的行数(row) |
0012 | 32 bit integer | 28 | 图片像素的列数(column) |
0016 | unsigned byte | ?? | 像素的值 |
0017 | unsigned byte | ?? | 像素的值 |
… | … | … | … |
xxxx | unsigned byte | ?? | 像素的值 |
像素按行排列。 像素值为0到255。0表示背景(白色),255表示前景(黑色)。
t10k-labels-idx1-ubyte
字节偏移量 | 数据类型 | 数值 | 说明 |
---|---|---|---|
0000 | 32 bit integer | 0x00000801(2049) | 魔数 (MSB first) |
0004 | 32 bit integer | 10000 | 标签数量 |
0008 | unsigned byte | ?? | 标签值 |
0009 | unsigned byte | ?? | 标签值 |
… | … | … | … |
xxxx | unsigned byte | ?? | 标签值 |
标签的值为0到9的整数。
读取方法
open() 函数
文件以二进制格式进行存储,我们同样的也就需要用二进制格式进行读取。所以我们在使用Python的open()
函数时,需指明模式为rb
,即以二进制格式打开一个文件用于只读。
f = open(file_name, "rb")
open()
将打开一个文件,创建一个file
对象,这时调用相关方法便可以对文件进行读写。
file.read(size)
size