解析MNIST的数据集

MNIST的官网数据集一直下不下来,好像要翻墙,总之查找不到URL,所以自己找其他途径下了,结果下下来不是整理好的数据集,长这样

后来才知道可以用struct函数来解析这种格式的文件,解析出来一堆jpg的图片,但是又不会用了,总之先把struct的代码放上来吧,省的以后忘了找不着

'''
from PIL import Image
import struct


def read_image(filename):
  f = open(filename, 'rb')
  index = 0
  buf = f.read()
  f.close()
  magic, images, rows, columns = struct.unpack_from('>IIII' , buf , index)
  index += struct.calcsize('>IIII')
  for i in range(10000):
  #for i in xrange(2000):
    image = Image.new('L', (columns, rows))


    for x in range(rows):
      for y in range(columns):
        image.putpixel((y, x), int(struct.unpack_from('>B', buf, index)[0]))
        index += struct.calcsize('>B')


    print ('save ' + str(i) + 'image')
    image.save('C:/Users/cxt66/Desktop/MNISTdata/MNISTdata/test_images/test' + str(i) + '.png')


def read_label(filename, saveFilename):
  f = open(filename, 'rb')
  index = 0
  buf = f.read()


  f.close()


  magic, labels = struct.unpack_from('>II' , buf , index)
  index += struct.calcsize('>II')
  
  labelArr = [0] * labels
  #labelArr = [0] * 2000


  for x in range(60000):
  #for x in xrange(2000):
    labelArr[x] = int(struct.unpack_from('>B', buf, index)[0])
    index += struct.calcsize('>B')


  save = open(saveFilename, 'w')


  save.write(','.join(map(lambda x: str(x), labelArr)))
  save.write('\n')


  save.close()
  print ('save labels success')


if __name__ == '__main__':
  read_image('C:/Users/cxt66/Desktop/MNISTdata/MNISTdata/t10k-images.idx3-ubyte')
  read_label('C:/Users/cxt66/Desktop/MNISTdata/MNISTdata/train-labels.idx1-ubyte','C:/Users/cxt66/Desktop/MNISTdata/MNISTdata/train_label.txt')

 

'''

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值