坎坎坷坷的深度学习之路(三)-Hello world(2)-------MNIST数据集1-MNIST格式

上一次说了些来自官网,无聊透顶的tf介绍,这次开始研究MNIST。识别之前先来关注一下MNIST的文件格式。

MNIST的数据集可以从 官网 处下载,一共包含4个文件(点击下面的文件名可直接下载)

train-images-idx3-ubyte.gz:  training set images (9912422 bytes) 
train-labels-idx1-ubyte.gz:  training set labels (28881 bytes) 
t10k-images-idx3-ubyte.gz:   test set images (1648877 bytes) 
t10k-labels-idx1-ubyte.gz:   test set labels (4542 bytes)
是gz格式的文件,按理来说应该使用gzip来解压的,在ubuntu中用下面的命令依次解压文件
gzip -b xxxxx.gz
解压后得到了四个不带后缀名的文件,这些便是MNIST的原始数据了,接下来我们来解析这些文件,并且把他们变成bmp文件可以直观地去看看这传说中来自各个年龄段的不同的人的手写体。

官网说明了这些文件的格式,(搬砖先)

  • TRAINING SET LABEL FILE (train-labels-idx1-ubyte):

[offset] [type]          [value]          [description] 
0000     32 bit integer  0x00000801(2049) magic number (MSB first) 
0004     32 bit integer  60000            number of items 
0008     unsigned byte   ??               label 
0009     unsigned byte   ??               label 
........ 
xxxx     unsigned byte   ??               label
The labels values are 0 to 9.
可以看到train-labels-idx1-ubyte文件开头是一个magic number,大小是2049,是一个4字节的数据,这个魔数的作用是拿来标记这个文件是MNIST数据集的train-labels-idx1-ubyte文件。

接下来又是一个4字节的数,大小为60000,表明了这个文件包含了60000个标签

之后便是60000个无符号字节,values是0到9,对应了image文件中各个图像中写了哪个数字,这里要读取这个数据可以用C语言中的fread(*buf, size, cnt, *FILE)进行读取

  • TRAINING SET IMAGE FILE (train-images-idx3-ubyte):
[offset] [type]          [value]          [description] 
0000     32 bit integer  0x00000803(2051) magic number 
0004     32 bit integer  60000            number of images 
0008     32 bit integer  28               number of rows 
0012     32 bit integer  28               number of columns 
0016     unsigned byte   ??               pixel 
0017     unsigned byte   ??               pixel 
........ 
xxxx     unsigned byte   ??               pixel
Pixels are organized row-wise. Pixel values are 0 to 255. 0 means background (white), 255 means foreground (black).
这个文件是包含了image数据的文件,从格式中可以解读出,它的魔数是2051,有60000个image。与label文件不同的是第8到11这四个字节包含的是图像数据的宽,12到15字节是图像数据的高,从第16字节开始的数据便是这些图像的数据了,由于每个图像是28*28,所以每个图像需要784字节来存储,如果要将它保存为bmp图像,向下读28*28个字节即可。
  • TEST SET LABEL FILE (t10k-labels-idx1-ubyte):
[offset] [type]          [value]          [description] 
0000     32 bit integer  0x00000801(2049) magic number (MSB first) 
0004     32 bit integer  10000            number of items 
0008     unsigned byte   ??               label 
0009     unsigned byte   ??               label 
........ 
xxxx     unsigned byte   ??               label
The labels values are 0 to 9.
test的label跟train的label具有相同的格式,就不再赘述。
  • TEST SET IMAGE FILE (t10k-images-idx3-ubyte):
[offset] [type]          [value]          [description] 
0000     32 bit integer  0x00000803(2051) magic number 
0004     32 bit integer  10000            number of images 
0008     32 bit integer  28               number of rows 
0012     32 bit integer  28               number of columns 
0016     unsigned byte   ??               pixel 
0017     unsigned byte   ??               pixel 
........ 
xxxx     unsigned byte   ??               pixel
test的image跟train的image也具有相同的格式,这里也不再赘述,不同的就是test的数据集只有10000个。


MNIST的数据集格式很简单,按照官方的格式解析就是了,接下来便是把数据写到bmp文件里面去了。。。。。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
所给定的待排序的关键字序列为{12,2,16,30,28,10,16*,20,6,18},请分别写出使用以下排序方法,每趟排序结束后关键字序列的状态: 1. 冒泡排序法 第一趟排序后序列:2,12,16,28,10,16*,20,6,18,30 第二趟排序后序列:2,12,16,10,16*,20,6,18,28,30 第趟排序后序列:2,12,10,16*,20,6,16,18,28,30 第四趟排序后序列:2,10,12,16*,6,16,18,20,28,30 第五趟排序后序列:2,10,12,6,16*,16,18,20,28,30 第六趟排序后序列:2,10,6,12,16,16*,18,20,28,30 第七趟排序后序列:2,6,10,12,16,18,16*,20,28,30 第八趟排序后序列:2,6,10,12,16,16*,18,20,28,30 第九趟排序后序列:2,6,10,12,16,16*,18,20,28,30 2. 插入排序法 第一趟排序后序列:2,12,16,30,28,10,16*,20,6,18 第二趟排序后序列:2,12,16,30,28,10,16*,20,6,18 第趟排序后序列:2,12,16,28,30,10,16*,20,6,18 第四趟排序后序列:2,10,12,16,28,30,16*,20,6,18 第五趟排序后序列:2,10,12,16,16*,28,30,20,6,18 第六趟排序后序列:2,6,10,12,16,16*,20,28,30,18 第七趟排序后序列:2,6,10,12,16,16*,18,20,28,30 3. 选择排序法 第一趟排序后序列:2,12,16,30,28,10,16*,20,6,18 第二趟排序后序列:2,6,16,30,28,10,16*,20,12,18 第趟排序后序列:2,6,10,30,28,16*,16,20,12,18 第四趟排序后序列:2,6,10,12,28,16*,16,20,30,18 第五趟排序后序列:2,6,10,12,16*,28,16,20,30,18 第六趟排序后序列:2,6,10,12,16*,16,28,20,30,18 第七趟排序后序列:2,6,10,12,16*,16,18,20,30,28 4. 希尔排序法 第一趟排序后序列:10,2,16*,6,12,16,18,30,28,20 第二趟排序后序列:2,10,6,12,16,16*,18,20,28,30 第趟排序后序列:2,6,10,12,16,16*,18,20,28,30 5. 快速排序法 第一趟排序后序列:10,2,6,12,16,16*,18,30,28,20 第二趟排序后序列:2,6,10,12,16,16*,18,20,28,30 6. 归并排序法 第一趟排序后序列:2,10,16*,6,12,16,18,30,28,20 第二趟排序后序列:2,6,10,12,16,16*,18,20,28,30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值