使用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中的输入和输出功能进行读取和写入的教程
Apr 14 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
Python中Threading用法详解
Dec 27 Python
解决Django的request.POST获取不到内容的问题
May 28 Python
PyQt5 多窗口连接实例
Jun 19 Python
python3.6环境安装+pip环境配置教程图文详解
Jun 20 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
Python Django 命名空间模式的实现
Aug 09 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 Python
python疲劳驾驶困倦低头检测功能的实现
Apr 04 Python
Python 文字识别
May 11 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中is_dir()函数使用指南
2015/05/08 PHP
php从身份证获取性别和出生年月
2017/02/09 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
php微信开发之谷歌测距
2018/06/14 PHP
浅谈php调用python文件
2019/03/29 PHP
Javascript 二维数组
2009/11/26 Javascript
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
精通Javascript系列之数值计算
2011/06/07 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
jquery中get和post的简单实例
2014/02/04 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
jQuery实现日历效果
2020/09/11 jQuery
Python中多线程及程序锁浅析
2015/01/21 Python
Python的另外几种语言实现
2015/01/29 Python
在RedHat系Linux上部署Python的Celery框架的教程
2015/04/07 Python
python目录与文件名操作例子
2016/08/28 Python
python自动12306抢票软件实现代码
2018/02/24 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
html5开发三八女王节表白神器
2018/03/07 HTML / CSS
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
通用求职信范文模板分享
2013/12/27 职场文书
大学生旷课检讨书
2014/01/22 职场文书
篝火晚会主持词
2014/03/25 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
团员个人年度总结
2015/02/26 职场文书
法定代表人身份证明书
2015/06/18 职场文书
酒店厨房管理制度
2015/08/06 职场文书
2019最新婚庆对联集锦!
2019/07/10 职场文书
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis
MySQL创建管理子分区
2022/04/13 MySQL