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写的Tkinter程序屏幕居中方法
Mar 10 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
Python和Perl绘制中国北京跑步地图的方法
Mar 03 Python
python2 与python3的print区别小结
Jan 16 Python
解决Django的request.POST获取不到内容的问题
May 28 Python
详解Python Qt的窗体开发的基本操作
Jul 14 Python
python统计字符的个数代码实例
Feb 07 Python
基于python3生成标签云代码解析
Feb 18 Python
Django权限设置及验证方式
May 13 Python
VSCode配合pipenv搞定虚拟环境的实现方法
May 17 Python
Python参数传递机制传值和传引用原理详解
May 22 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 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 HTML代码串截取代码
2008/12/29 PHP
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
PHP 日,周,月点击排行统计
2012/01/11 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
DIV随滚动条滚动而滚动的实现代码【推荐】
2016/04/12 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
JS实现动态添加DOM节点和事件的方法示例
2017/04/28 Javascript
vue使用websocket的方法实例分析
2019/06/22 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
Servlet返回的数据js解析2种方法
2019/12/12 Javascript
Python Trie树实现字典排序
2014/03/28 Python
深入解析Python中的上下文管理器
2016/06/28 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
详解python中@的用法
2019/03/27 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
基于python plotly交互式图表大全
2019/12/07 Python
python集合删除多种方法详解
2020/02/10 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
python 自动识别并连接串口的实现
2021/01/19 Python
python中altair可视化库实例用法
2021/01/26 Python
加拿大专业美发产品购物网站:Chatters
2021/02/28 全球购物
信息专业大学生自我评价分享
2014/01/17 职场文书
小班开学寄语
2014/04/04 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
节约用电通知
2015/04/25 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
幼儿园师德师风心得体会
2016/01/12 职场文书
创业计划书之酒吧
2019/12/02 职场文书