使用NumPy读取MNIST数据的实现代码示例


Posted in Python onNovember 20, 2019

NumPy

什么是NumPy

NumPy是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。主页为https://numpy.org/。

安装NumPy

使用pip工具来安装。

python -m pip install numpy

使用NumPy读取mnist数据

如果直接从网络上读取mnist数据,恭喜你,目前国内基本需要一个小时以上。所以建议预先下载mnist数据包。

工作环境

当前我的工作环境如下:Win10 + Anaconda。使用Spyder4做为IDE。Anaconda的安装可以参考我的blog。

将数据放置到指定目录

下图是我当前的工作目录环境,因此在C:\Users\sus20\.spyder-py3-dev目录下,建立子目录minist。如下图所示:

使用NumPy读取MNIST数据的实现代码示例

将下载好的四个gz文件拷贝到这个目录下,并将这四个gz文件解压。如下图所示:

使用NumPy读取MNIST数据的实现代码示例

使用NumPy读取MNIST

load_mnist 函数返回两个数组,第一个是一个 n * m 维的 NumPy array(images),这里的 n 是样本行数,m 是特征列数。训练数据集包含 60,000 个样本,测试数据集包含 10,000 样本。

在 MNIST 数据集中的每张图片由 28 * 28 个像素点构成,每个像素点用一个灰度值表示。在这里,我们将 28 * 28 的像素展开为一个一维的行向量,这些行向量就是图片数组里的行(每行 784 个值, 或者说每行就是代表了一张图片)。

load_mnist 函数返回的第二个数组(labels) 包含了相应的目标变量,也就是手写数字的类标签(整数 0-9)。

import os
import struct
import numpy as np
 
def load_mnist(path, kind='train'):
  """Load MNIST data from `path`"""
  labels_path = os.path.join(path,'%s-labels-idx1-ubyte'% kind)
  
  images_path = os.path.join(path,'%s-images-idx3-ubyte'% kind)
  
  with open(labels_path, 'rb') as lbpath:
    magic, n = struct.unpack('>II',lbpath.read(8))
    labels = np.fromfile(lbpath,dtype=np.uint8)
  #读入magic是一个文件协议的描述,也是调用fromfile 方法将字节读入NumPy的array之前在文件缓冲中的item数(n). 
 
  with 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
 
print(load_mnist("minst_data"))

运行代码,将得到如下图结果,说明我们已经正确的从本地读取MNIST数据集。

使用NumPy读取MNIST数据的实现代码示例

下一步,我们要开始使用TensorFlow读取MNIST数据集。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中将阿拉伯数字转换成中文的实现代码
May 19 Python
使用Python实现下载网易云音乐的高清MV
Mar 16 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
python itchat实现微信好友头像拼接图的示例代码
Aug 14 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
python实现决策树分类算法
Dec 21 Python
python实现字符串加密 生成唯一固定长度字符串
Mar 22 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
pytorch的梯度计算以及backward方法详解
Jan 10 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
Mar 30 Python
Python Pandas 对列/行进行选择,增加,删除操作
May 17 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
Oct 12 Python
Python脚本操作Excel实现批量替换功能
Nov 20 #Python
详解Python中的format格式化函数的使用方法
Nov 20 #Python
Python数据分析pandas模块用法实例详解
Nov 20 #Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 #Python
Python求解正态分布置信区间教程
Nov 20 #Python
Python pandas RFM模型应用实例详解
Nov 20 #Python
使用Python实现正态分布、正态分布采样
Nov 20 #Python
You might like
缓存技术详谈―php
2006/12/14 PHP
Ajax PHP分页演示
2007/01/02 PHP
php中出现空白页的原因及解决方法汇总
2014/07/08 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
json跟xml的对比分析
2008/06/10 Javascript
学习ExtJS Panel常用方法
2009/10/07 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
js Dialog 实践分享
2012/10/22 Javascript
JS中表单的使用小结
2014/01/11 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
详解js中的apply与call的用法
2016/07/30 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
Python标准库之sqlite3使用实例
2014/11/25 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
python浪漫表白源码
2019/04/05 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
python 实现控制鼠标键盘
2020/11/27 Python
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
.NET现在共支持多少种语言
2014/02/26 面试题
大学生毕业自我评价范文分享
2013/11/11 职场文书
12月红领巾广播稿
2014/02/13 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
业余无线电通联Q语
2022/02/18 无线电