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

作者:justidle 时间:2021-08-05 19:17:52 

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数据集。

来源:https://blog.csdn.net/justidle/article/details/103146658

标签:NumPy,读取,MNIST
0
投稿

猜你喜欢

  • Win10下python3.5和python2.7环境变量配置教程

    2021-08-31 10:40:23
  • sql语句之数据操作介绍

    2024-01-22 18:09:39
  • Python实现上下班抢个顺风单脚本

    2021-01-12 15:56:51
  • PHP延迟静态绑定的深入讲解

    2024-06-05 15:42:51
  • MySQL查看版本的五种方法总结

    2024-01-16 08:22:04
  • Python中str is not callable问题详解及解决办法

    2023-10-30 05:34:42
  • 对YOLOv3模型调用时候的python接口详解

    2023-05-31 00:58:57
  • 详解Scrapy Redis入门实战

    2023-04-14 11:39:08
  • sql 常用技巧整理

    2011-11-03 17:10:14
  • SQL语句解析执行的过程及原理

    2024-01-26 21:11:55
  • Python爬虫辅助利器PyQuery模块的安装使用攻略

    2023-10-18 02:19:34
  • mysql分表和分区的区别浅析

    2024-01-23 13:43:16
  • Oracle 管道 解决Exp/Imp大量数据处理问题

    2009-07-12 18:31:00
  • 前端node Session和JWT鉴权登录示例详解

    2024-05-09 14:49:58
  • Python实现对照片中的人脸进行颜值预测

    2023-04-05 18:21:12
  • Python OS模块实例详解

    2022-11-18 07:56:01
  • TensorFlow使用Graph的基本操作的实现

    2023-04-10 22:22:37
  • php获取数组长度的方法(有实例)

    2023-11-20 07:55:28
  • 基于Python实现的扫雷游戏实例代码

    2023-06-26 12:29:34
  • MySQL中使用case when 语句实现多条件查询的方法

    2024-01-16 17:17:31
  • asp之家 网络编程 m.aspxhome.com