mnist 数据集

读取mnist数据

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

首先该数据是以二进制存储的,我们读取的时候要以’rb’方式读取;其次,真正的数据只有[value]这一项,其他的[type]等只是来描述的,并不真正在数据文件里面。也就是说,在读取真实数据之前,我们要读取4个32 bit integer.由[offset]我们可以看出真正的pixel是从0016开始的,一个int 32位,所以在读取pixel之前我们要读取4个 32 bit integer,也就是magic number, number of images, number of rows, number of columns. 当然,在这里使用struct.unpack_from()会比较方便.

Training set images: train-images-idx3-ubyte.gz (9.9 MB, 解压后 47 MB, 包含 60,000 个样本)

Training set labels: train-labels-idx1-ubyte.gz (29 KB, 解压后 60 KB, 包含 60,000 个标签)

Test set images: t10k-images-idx3-ubyte.gz (1.6 MB, 解压后 7.8 MB, 包含 10,000 个样本)

Test set labels: t10k-labels-idx1-ubyte.gz (5KB, 解压后 10 KB, 包含 10,000 个标签)


loadMNISTImages

最后得到images为二维矩阵,labels为一维矩阵。

你可能感兴趣的:(mnist 数据集)