mnist文件格式说明

根据官网 http://yann.lecun.com/exdb/mnist/ 的文件格式的定义windows

TRAINING SET LABEL FILE (train-labels-idx1-ubyte):编辑器

[offset] [type]          [value]          [description] 3d

0000     32 bit integer  0x00000801(2049) magic number (MSB first) blog

0004     32 bit integer  60000            number of items 图片

0008     unsigned byte   ??               label ip

0009     unsigned byte   ??               label 开发

........ get

xxxx     unsigned byte   ??               labelit

The labels values are 0 to 9.io

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

 

idx3-ubyte 的

1.Magic number。即幻数,它能够用来标记文件或者协议的格式,不少文件都有幻数标志来代表该文件的格式。idx3-ubyte的做者也遵循常例。2051是图片,2049是文本。

2.number of images / number of items 。

3.内容。像素或文字

能够查看文件字节的文本编辑器打开解压出来的train-images.idx3-ubyte

截取前面几行。这些都是16进制的。

第一部分 a为0000 0803。 转为10进制就是

(0000 0803)10 = 2051. 即magic number是2051,图片格式

第二部分为0000 ea60。转为10进制就是6000。说明这个文件包含6000个图片。

第三部分和第四部分,都是 0000 001c。转为10进制就是28,说明图片的长、宽是28.

以上4个部分,全部信息都是占用4个字节(结构图中的type = 32 bit intege)。

第五部分图片的像素位,只占用1个字节(结构图中的type =unsigned byte)。

咱们开始数字节文本,在第四部分的后面,一共有152 个“00” (图中的红框),而后是03 12 12 7e 88。这里是16进制。也就是03(0x03),18(0x12),18(0x12),18(0x12),126(0x7e),136(0x88)

由于前面定义了一个图像是28*28,152应该被分解为28*5+12,表明第一张图的前5行的像素都是00,及第6行的前12位像素也是00,第6行的第13位像素是03,14位是18。。。。。

 

利用网上找的程序,生成第一张的图像以下:

利用windows自带的图像编辑软件取色,鼠标放到x-5 y-12位置,开发依次比较,发现像素符合逻辑。

相关文章
相关标签/搜索