博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python解析MNIST数据集
阅读量:5832 次
发布时间:2019-06-18

本文共 1947 字,大约阅读时间需要 6 分钟。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/inforstack/article/details/78050895
 
#coding=UTF-8import numpy as npimport structimport matplotlib.pyplot as pltdef parese_idx3(idx3_file):    """    idx3文件解析方法    :param idx3_file: idx3文件路径    :return: 数据集    """    # 读取二进制数据    bin_data = open(idx3_file, 'rb').read()    # 解析文件头信息 magic、imgs、height、width    # '>IIII'是说使用大端法读取4个unsinged int32    offset = 0    fmt_header = '>iiii'    magic, imgs, height, width = struct.unpack_from(fmt_header, bin_data, offset)    print ('magic:%d, imgs: %d, heightXwidth: %dX%d' % (magic, imgs, height, width))    # 解析数据集    image_size = height * width    offset += struct.calcsize(fmt_header)    fmt_image = '>' + str(image_size) + 'B'    images = np.empty((imgs, height, width))    for i in range(imgs):        if (i + 1) % 10000 == 0:            print ('已解析 %d' % (i + 1) + '张');        images[i] = np.array(struct.unpack_from(fmt_image, bin_data, offset)).reshape((height, width))        offset += struct.calcsize(fmt_image)    return imagesdef parese_idx1(idx1_file):    """    idx1文件解析方法    :param idx1_file: idx1文件路径    :return: 数据集    """    # 读取二进制数据    bin_data = open(idx1_file, 'rb').read()    # 解析文件头信息 magic、imgs    offset = 0    fmt_header = '>ii'    magic, imgs = struct.unpack_from(fmt_header, bin_data, offset)    print ('magic:%d, imgs: %d' % (magic, imgs))    # 解析数据集    offset += struct.calcsize(fmt_header)    fmt_image = '>B'    labels = np.empty(imgs)    for i in range(imgs):        if (i + 1) % 10000 == 0:            print ('已解析 %d' % (i + 1) + '张')        labels[i] = struct.unpack_from(fmt_image, bin_data, offset)[0]        offset += struct.calcsize(fmt_image)    return labelsimgs = parese_idx3("ubyte/t10k-images.idx3-ubyte");labs = parese_idx1("ubyte/t10k-labels.idx1-ubyte");for i in range(10):    print(labs[i])    plt.imshow(imgs[i])    plt.show()
PS:
t10k-images.idx3-ubyte = img1
t10k-labels.idx1-ubyte = lab1
lab1是img1的标签信息
你可能感兴趣的文章
获取Android控件Listview中被选中的某一列的值
查看>>
openldap学习笔记
查看>>
虚拟机无法上网解决
查看>>
遍历javascript中的数组,最大最小值获取
查看>>
Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
查看>>
去掉标题栏 并且显示魅族smartbat
查看>>
115个Java面试题和答案——终极列表(下)
查看>>
java pdfbox2.0.0 划线,表格
查看>>
Mac苹果电脑下载android4.2源码并进行源码调试
查看>>
Android import dalvik.system.VMRuntime;报错
查看>>
算法导论——栈容器实现
查看>>
recvfrom failed: ECONNRESET (Connection reset by peer)
查看>>
【转载】VNC和远程桌面的区别
查看>>
如何产生一个随机数,在两个随机数之间。
查看>>
vCenter Server 的安装
查看>>
浅说Ajax
查看>>
IIS 6.0/7.0/7.5、Nginx、Apache 等服务器解析漏洞总结
查看>>
Win7远程桌面使用不了
查看>>
Cascalog:Up and Run
查看>>
关于Java中的静态代码块
查看>>