使用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列表推导式的使用方法
Nov 21 Python
python实现合并两个数组的方法
May 16 Python
对python requests发送json格式数据的实例详解
Dec 19 Python
python实现简单flappy bird
Dec 24 Python
Python绘制并保存指定大小图像的方法
Jan 10 Python
django基础学习之send_mail功能
Aug 07 Python
python 叠加等边三角形的绘制的实现
Aug 14 Python
PyTorch中反卷积的用法详解
Dec 30 Python
python argparse模块通过后台传递参数实例
Apr 20 Python
python中rb含义理解
Jun 18 Python
pytorch掉坑记录:model.eval的作用说明
Jun 23 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 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 缩略图实现函数代码
2011/06/23 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
2015/09/23 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
jquery加载页面的方法(页面加载完成就执行)
2011/06/21 Javascript
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
vue checkbox 全选 数据的绑定及获取和计算方法
2018/02/09 Javascript
详解组件库的webpack构建速度优化
2018/06/18 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
python 换位密码算法的实例详解
2017/07/19 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
使用pandas read_table读取csv文件的方法
2018/07/04 Python
Python中的CSV文件使用"with"语句的方式详解
2018/10/16 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
Python+MySQL随机试卷及答案生成程序的示例代码
2021/02/01 Python
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
SQL Server面试题
2013/04/04 面试题
宾馆总经理岗位职责
2014/02/14 职场文书
采购意向书范本
2014/03/31 职场文书
办公室主任竞聘演讲稿
2014/05/15 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
幼儿园大班个人总结
2015/02/28 职场文书
清明节寄语2015
2015/03/23 职场文书