【问题标题】:Failed to unpack MNIST data set using python3使用 python3 解压 MNIST 数据集失败
【发布时间】:2018-02-01 20:00:48
【问题描述】:

我正在尝试根据http://yann.lecun.com/exdb/mnist/中所说的数据格式将MNIST数据转换为png格式

下面是训练集图像文件的格式(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

这是我的代码。我使用 struct 解包数据集并尝试打印数据集中的前 4 个 32 位整数。

from PIL import Image
import struct

def read_image(filename):
  f = open(filename, 'rb')

  index = 0
  buf = f.read()

  magic, images, rows, columns = struct.unpack_from('>IIII' , buf , index)
  index += struct.calcsize('>IIII')

  print(magic, images, rows, columns)
  f.close()
  # for i in range(images):
  # #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('test/' + str(i) + '.png')
if __name__ == '__main__':
  read_image('train-images-idx3-ubyte.gz')

但是输出完全错误:

529205256 2055376946 226418 1634299437

【问题讨论】:

    标签: python mnist


    【解决方案1】:

    我意识到我忘记提取“train-images-idx3-ubyte.gz”。提取后,我得到一个名为“train-images.idx3-ubyte”的文件,替换为“train-images-idx3-ubyte” .gz" 用这个新文件名,终于成功了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 2015-11-13
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多