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 相关文章推荐
以一段代码为实例快速入门Python2.7
Mar 31 Python
Python中函数的多种格式和使用实例及小技巧
Apr 13 Python
Python生成器(Generator)详解
Apr 13 Python
详解Python文本操作相关模块
Jun 22 Python
Python中循环后使用list.append()数据被覆盖问题的解决
Jul 01 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
使用Python在Windows下获取USB PID&VID的方法
Jul 02 Python
Python基础之函数原理与应用实例详解
Jan 03 Python
浅谈tensorflow模型保存为pb的各种姿势
May 25 Python
Python字典实现伪切片功能
Oct 28 Python
python字典进行运算原理及实例分享
Aug 02 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过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
js的写法基础分析
2011/01/17 Javascript
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
jQuery实现网站添加高亮突出显示效果的方法
2015/06/26 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
js中call()和apply()改变指针问题的讲解
2019/01/17 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
python实现bitmap数据结构详解
2014/02/17 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
django2.0扩展用户字段示例
2019/02/13 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
Python日志syslog使用原理详解
2020/02/18 Python
基于python图像处理API的使用示例
2020/04/03 Python
福克斯租车:Fox Rent A Car
2017/04/13 全球购物
专科毕业生学习生活的自我评价
2013/10/26 职场文书
经济与贸易专业应届生求职信
2013/11/19 职场文书
医院搬迁方案
2014/06/14 职场文书
创先争优标语
2014/06/27 职场文书
课外小组活动总结
2014/08/27 职场文书
2015年质检工作总结
2015/05/04 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
小学副班长竞选稿
2015/11/21 职场文书
Mysql systemctl start mysqld报错的问题解决
2021/06/03 MySQL