使用NumPy获取MNIST图片

MNIST图片

在 MNIST 数据集中的每张图片由 28 * 28 个像素点构成,每个像素点用一个灰度值表示。在这里,我们将 28 * 28 的像素展开并将其写入到指定目录。

首先,我们建立展开后的目录,我的配置如下图。也就是在minst_data(道歉,才发现目录写错)下建立 mnist_train 目录。

Python代码

import struct
import numpy as np
#import matplotlib.pyplot as plt
import PIL.Image

filename=minst_data/train-images-idx3-ubyte
binfile=open(filename,rb)
buf=binfile.read()
index=0
magic,numImages,numRows,numColumns=struct.unpack_from(>IIII,buf,index)
index+=struct.calcsize(>IIII)
for image in range(0,numImages):
    im=struct.unpack_from(>784B,buf,index)
    index+=struct.calcsize(>784B)
    im=np.array(im,dtype=uint8)
    im=im.reshape(28,28)
    im=PIL.Image.fromarray(im)
    im.save(minst_data/mnist_train/train_%s.bmp%image,bmp)

注意目录的位置要和自己机器上配置一致。

运行结果

代码运行后,可以在 mnist_train 目录下得到对应的原始图片。如下图所示。图片比较多,耐心等。

经验分享 程序员 微信小程序 职场和发展