python读取mnist数据集方法案例详解


Posted in Python onSeptember 04, 2021

mnist手写数字数据集在机器学习中非常常见,这里记录一下用python从本地读取mnist数据集的方法。

数据集格式介绍

这部分内容网络上很常见,这里还是简明介绍一下。网络上下载的mnist数据集包含4个文件:

python读取mnist数据集方法案例详解

前两个分别是测试集的image和label,包含10000个样本。后两个是训练集的,包含60000个样本。.gz表示这个一个压缩包,如果进行解压的话,会得到.ubyte格式的二进制文件。

python读取mnist数据集方法案例详解

上图是训练集的label和image数据的存储格式。两个文件最开始都有magic number和number of images/items两个数据,有用的是第二个,表示文件中存储的样本个数。另外要注意的是数据的位数,有32位整型和8位整型两种。

读取方法

.gz格式的文件读取

需要import gzip
读取训练集的代码如下:

def load_mnist_train(path, kind='train'): 
'‘'
path:数据集的路径
kind:值为train,代表读取训练集
‘'‘   
    labels_path = os.path.join(path,'%s-labels-idx1-ubyte.gz'% kind)
    images_path = os.path.join(path,'%s-images-idx3-ubyte.gz'% kind)
    #使用gzip打开文件
    with gzip.open(labels_path, 'rb') as lbpath:
	    #使用struct.unpack方法读取前两个数据,>代表高位在前,I代表32位整型。lbpath.read(8)表示一次从文件中读取8个字节
	    #这样读到的前两个数据分别是magic number和样本个数
        magic, n = struct.unpack('>II',lbpath.read(8))
        #使用np.fromstring读取剩下的数据,lbpath.read()表示读取所有的数据
        labels = np.fromstring(lbpath.read(),dtype=np.uint8)
    with gzip.open(images_path, 'rb') as imgpath:
        magic, num, rows, cols = struct.unpack('>IIII',imgpath.read(16))
        images = np.fromstring(imgpath.read(),dtype=np.uint8).reshape(len(labels), 784)
    return images, labels

读取测试集的代码类似。

非压缩文件的读取

如果在本地对四个文件解压缩之后,得到的就是.ubyte格式的文件,这时读取的代码有所变化。

def load_mnist_train(path, kind='train'): 
'‘'
path:数据集的路径
kind:值为train,代表读取训练集
‘'‘   
    labels_path = os.path.join(path,'%s-labels-idx1-ubyte'% kind)
    images_path = os.path.join(path,'%s-images-idx3-ubyte'% kind)
    #不再用gzip打开文件
    with open(labels_path, 'rb') as lbpath:
	    #使用struct.unpack方法读取前两个数据,>代表高位在前,I代表32位整型。lbpath.read(8)表示一次从文件中读取8个字节
	    #这样读到的前两个数据分别是magic number和样本个数
        magic, n = struct.unpack('>II',lbpath.read(8))
        #使用np.fromfile读取剩下的数据
        labels = np.fromfile(lbpath,dtype=np.uint8)
    with gzip.open(images_path, 'rb') as imgpath:
        magic, num, rows, cols = struct.unpack('>IIII',imgpath.read(16))
        images = np.fromfile(imgpath,dtype=np.uint8).reshape(len(labels), 784)
    return images, labels

读取之后可以查看images和labels的长度,确认读取是否正确。

到此这篇关于python读取mnist数据集方法案例详解的文章就介绍到这了,更多相关python读取mnist数据集方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python根据时间生成mongodb的ObjectId的方法
Mar 13 Python
Python网络编程中urllib2模块的用法总结
Jul 12 Python
快速入手Python字符编码
Aug 03 Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
python获取交互式ssh shell的方法
Feb 14 Python
Python+AutoIt实现界面工具开发过程详解
Aug 07 Python
Python中文分词库jieba,pkusegwg性能准确度比较
Feb 11 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
Python实现读取并写入Excel文件过程解析
May 27 Python
Python如何优雅删除字符列表空字符及None元素
Jun 25 Python
python热力图实现简单方法
Jan 29 Python
Python基础之元编程知识总结
May 23 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 #Python
一小时学会TensorFlow2之基本操作2实例代码
Python torch.flatten()函数案例详解
Aug 30 #Python
Python之基础函数案例详解
Aug 30 #Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 #Python
python使用matplotlib绘制图片时x轴的刻度处理
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
Aug 30 #Python
You might like
php批量删除数据
2007/01/18 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
2013/01/06 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
详解php的socket通信
2015/08/11 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
Document 对象的常用方法
2009/07/31 Javascript
将string解析为json的几种方式小结
2010/11/11 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
微信小程序 参数传递实例代码
2017/03/20 Javascript
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
[02:08]DOTA2英雄基础教程 马格纳斯
2014/01/17 DOTA
Python 初始化多维数组代码
2008/09/06 Python
python正则分组的应用
2013/11/10 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
阿迪达斯比利时官方商城:adidas比利时
2016/10/10 全球购物
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
人力资源管理专业学生自我评价
2013/11/20 职场文书
销售内勤岗位职责
2014/04/15 职场文书
实践单位评语
2014/04/26 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
2015届本科毕业生自我鉴定
2014/09/27 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
开国大典观后感
2015/06/04 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书