Mnist数据集 简单介绍

MNIST数据库

可从此页面获得的MNIST手写数字数据库的训练集为60,000个示例,而测试集为10,000个示例。它是NIST可提供的更大集合的子集。这些数字已进行尺寸规格化,并在固定尺寸的图像中居中。

对于那些想在实际数据上尝试学习技术和模式识别方法而又花最少的精力进行预处理和格式化的人来说,这是一个很好的数据库。

该站点上有四个文件:

train-images-idx3-ubyte.gz:训练集图像(9912422字节) 
train-labels-idx1-ubyte.gz:训练集标签( 28881字节)

t10k-images-idx3-ubyte.gz:测试集图像(1648877字节) )
t10k-labels-idx1-ubyte.gz:测试集标签(4542字节)

也可以去我的csdn资源上下载:MNIST数据集

请注意,您的浏览器可能会在不告知您的情况下解压缩这些文件。如果您下载的文件的大小大于上述文件的大小,则说明您的浏览器已将其解压缩。只需将它们重命名即可删除.gz扩展名。有人问我“我的应用程序无法打开您的图像文件”。这些文件不是任何标准图像格式。您必须编写自己的程序(非常简单)才能阅读它们。文件格式在此页面底部描述。

将来自NIST的原始黑白(双水平)图像尺寸标准化为适合20x20像素的框,同时保留其长宽比。作为归一化算法使用的抗锯齿技术的结果,所得图像包含灰度级。通过计算像素的质心并平移图像以将该点定位在28x28场的中心,从而将图像定位在28x28图像的中心。

使用某些分类方法(尤其是基于模板的方法,例如SVM和K最近邻),当数字以边界框而不是质心为中心时,错误率会提高。如果进行这种预处理,则应在出版物中进行报告。

MNIST数据库由NIST的特殊数据库3和特殊数据库1构成,其中包含手写数字的二进制图像。NIST最初将SD-3指定为训练集,将SD-1指定为测试集。但是,SD-3比SD-1更干净,更容易识别。可以从SD-3是在人口普查局员工中收集而SD-1是在高中学生中收集的事实中找到其原因。从学习实验中得出明智的结论,要求结果独立于完整样本集中训练集和测试的选择。因此,有必要通过混合NIST的数据集来构建新的数据库。

MNIST训练集由SD-3的30,000个模式和SD-1的30,000个模式组成。我们的测试集由SD-3的5,000个模式和SD-1的5,000个模式组成。60,000种模式训练集包含来自大约250位作者的示例。我们确保训练集和测试集的作者集不相交。

SD-1包含由500位不同作者编写的58,527位数字图像。与SD-3不同,在SD-3中,来自每个写入器的数据块按顺序出现,而SD-1中的数据则被加密。SD-1的写入者身份可用,我们使用此信息来对写入者进行解读。然后,我们将SD-1分为两部分:由前250位作者编写的字符进入了我们的新培训集。其余的250名作者被放置在我们的测试集中。因此,我们有两组,每组有近30,000个示例。新的训练集已完成,其中包含来自SD-3的足够示例(从模式0开始),从而形成了60,000套完整的训练模式。同样,新的测试集以SD-3示例(从模式#35,000开始)完成,从而形成了具有60,000个测试模式的全套软件。仅有10,000张测试图像的一部分(SD-1和5中的5,000张,该站点上提供SD-3中的000)。完整的60,000个样本训练集可用。

MNIST数据库的文件格式

数据以非常简单的文件格式存储,旨在存储矢量和多维矩阵。此格式的常规信息在此页的末尾给出,但是您无需阅读即可使用数据文件。

文件中的所有整数都以大多数非Intel处理器使用的MSB优先(高端)格式存储。英特尔处理器和其他低端计算机的用户必须翻转标头的字节。

有4个文件:

train-images-idx3-ubyte:训练集图像 
train-labels-idx1-ubyte:训练集标签 
t10k-images-idx3-ubyte:测试集图像 
t10k-labels-idx1-ubyte:测试集标签

训练集包含60000个示例,测试集包含10000个示例。

测试集的前5000个示例来自原始的NIST训练集。最后的5000个来自原始的NIST测试集。前5000个比后5000个更干净,更容易。

训练设置标签文件(train-labels-idx1-ubyte):

[偏移] [类型] [值] [描述] 
0000 32位整数0x00000801(2049)幻数(MSB优先) 
0004 32位整数60000项数 
0008无符号字节?标签 
0009无符号字节 标签 
........ 
xxxx无符号字节?? 标签

标签值为0到9。

训练集图像文件(train-images-idx3-ubyte):

[偏移] [类型] [值] [描述] 
0000 32位整数0x00000803(2051)幻数 
0004 32位整数60000图片数 
0008 32位整数28行数 
0012 32位整数28列数 
0016无符号字节? ?像素 
0017无符号字节 像素 
........ 
xxxx无符号字节?? 像素点

像素按行组织。像素值为0到255。0表示背景(白色),255表示前景(黑色)。

测试集标签文件(t10k-labels-idx1-ubyte):

[偏移] [类型] [值] [描述] 
0000 32位整数0x00000801(2049)幻数(MSB优先) 
0004 32位整数10000项数 
0008无符号字节?标签 
0009无符号字节 标签 
........ 
xxxx无符号字节?? 标签

标签值为0到9。

测试集图像文件(t10k-images-idx3-ubyte):

[偏移] [类型] [值] [描述] 
0000 32位整数0x00000803(2051)幻数 
0004 32位整数10000图像数 
0008 32位整数28行数 
0012 32位整数28列数 
0016无符号字节? ?像素 
0017无符号字节 像素 
........ 
xxxx无符号字节?? 像素点

像素按行组织。像素值为0到255。0表示背景(白色),255表示前景(黑色)。 
  

IDX文件格式

IDX文件格式是用于各种数值类型的向量和多维矩阵的一种简单格式。

基本格式是

幻数 
尺寸0 
尺寸1 
尺寸2尺寸 
..... 
尺寸N 
数据

幻数是整数(MSB在前)。前2个字节始终为0。

第三个字节编码数据的类型: 
0x08:无符号字节 
0x09:带符号字节 
0x0B:短(2个字节) 
0x0C:int(4个字节) 
0x0D:浮点(4个字节) 
0x0E:双(8个字节)

第4个字节对向量/矩阵的维数进行编码:1表示矢量,2表示矩阵...

每个维度的大小均为4字节整数(像大多数非Intel处理器一样,MSB在前,高字节在前)。

数据像存储在C数组中一样存储,即最后一维的索引变化最快。 

发布了67 篇原创文章 · 获赞 401 · 访问量 41万+

猜你喜欢

转载自blog.csdn.net/qq_36511401/article/details/102788424