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 相关文章推荐
django上传图片并生成缩略图方法示例
Dec 11 Python
解决Python 中英文混输格式对齐的问题
Jul 16 Python
Python爬虫PyQuery库基本用法入门教程
Aug 04 Python
pyqt5的QComboBox 使用模板的具体方法
Sep 06 Python
浅谈tensorflow之内存暴涨问题
Feb 05 Python
Matplotlib使用字符串代替变量绘制散点图的方法
Feb 17 Python
Python turtle库的画笔控制说明
Jun 28 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
Jul 20 Python
Python实现手绘图效果实例分享
Jul 22 Python
在python中对于bool布尔值的取反操作
Dec 11 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
Jan 26 Python
python 将Excel转Word的示例
Mar 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
js检测用户输入密码强度
2015/10/22 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
jquery实现自定义图片裁剪功能【推荐】
2017/03/08 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
Angular2中监听数据更新的方法
2018/08/31 Javascript
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
编写多线程Python服务器 最适合基础
2018/09/14 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
Pytorch to(device)用法
2020/01/08 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
创建精神文明单位实施方案
2014/03/08 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
毕业留言寄语大全
2014/04/10 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
学习退步检讨书
2014/09/28 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
检讨书模板
2015/01/29 职场文书
千与千寻观后感
2015/06/04 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python
一文搞懂php的垃圾回收机制
2021/06/18 PHP