MNIST是一个手写数字集合,每张图片分辨率为28x28,像素点数值取值范围0~255。mnist.pkl文件的内容info是一个元组,包括训练集、验证集、测试集,它并没有直接使用原始图像,而是将其转换成了向量的形式,它已经把手写识别的图片(28*28)转化成了一个向量(1,784),向量中的每一维分别代表原始图像中对应像素点的灰度值;然后给出了这个图片的标识0-9。

首先要打开pkl文件,需要用到py包_pickle,这里的open要用rb,因为是要以二进制的方式读取文件。(我这里的pkl文件还是个压缩包,所以使用gzip打开)

import _pickle as cPickle
import gzipf = gzip.open("MNIST\mnist.pkl.gz",'rb')
training_data, validation_data, test_data = cPickle.load(f, encoding='bytes')

可以到训练集、验证集、测试集分别有50000,10000,10000张

其中训练集分为两部分,第一维存储的是图像对应的50000个1*784的向量,第二维存储的50000个是图像对应的数字标签。

读取训练集的第一张图片看看

 数据的预处理

将图像从行向量(1*784)转换成列向量(784*1),并将图像对应的数字也转换成numpy类型的列向量(10*1),数字对应的索引置1,其余位置则为0。

training_inputs = [np.reshape(x, (784, 1)) for x in training_data[0]]
training_results = [vectorized_result(y) for y in training_data[1]]
training_data = list(zip(training_inputs, training_results))validation_inputs = [np.reshape(x, (784, 1)) for x in validation_data[0]]
validation_data = list(zip(validation_inputs, validation_data[1]))test_inputs = [np.reshape(x, (784, 1)) for x in test_data[0]]
test_data = list(zip(test_inputs, test_data[1]))
def vectorized_result(j):e = np.zeros((10, 1))e[j] = 1.0return e

完整代码:

import matplotlib.pyplot as plt
import numpy as np
import _pickle as cPickle
import gzipdef vectorized_result(j):e = np.zeros((10, 1))e[j] = 1.0return ef = gzip.open("MNIST\mnist.pkl.gz",'rb')
training_data, validation_data, test_data = cPickle.load(f, encoding='bytes')#print(type(training_data[0])) #50000张784*1的图像
#print(training_data[0][0].shape)
#print(type(training_data[1])) #50000个数字标签training_inputs = [np.reshape(x, (784, 1)) for x in training_data[0]]
training_results = [vectorized_result(y) for y in training_data[1]]
training_data = list(zip(training_inputs, training_results))validation_inputs = [np.reshape(x, (784, 1)) for x in validation_data[0]]
validation_data = list(zip(validation_inputs, validation_data[1]))test_inputs = [np.reshape(x, (784, 1)) for x in test_data[0]]
test_data = list(zip(test_inputs, test_data[1]))
#print(len(training_data))
#print(training_data)img = training_inputs[0]
img = img.reshape(28,-1)
print(type(img))
plt.imshow(img)
plt.show()

使用 plt.imshow() 方法进行画图,它将灰度图像按照灰度值的高低映射成彩色图像。

手写数字数据集——MINST的读取及预处理相关推荐

  1. BP算法实现--minst手写数字数据集识别

    实验步骤 初始化网络架构 网络层数,每层神经元数,连接神经元的突触权重,每个神经元的偏置 构造bp算法函数 对于一个输入数据,前向计算每层的输出值,保存未激活的输出和激活过的输出值,这里用的激活函数是 ...

  2. 将MNIST手写数字数据集导入NumPy数组(《深度学习入门:基于Python的理论与实现》实践笔记)

    将MNIST手写数字数据集导入NumPy数组(<深度学习入门:基于Python的理论与实现>实践笔记) 一.下载MNIST数据集(使用urllib.request.urlretrieve( ...

  3. [TensorFlow深度学习入门]实战九·用CNN做科赛网TibetanMNIST藏文手写数字数据集准确率98%+

    [TensorFlow深度学习入门]实战九·用CNN做科赛网TibetanMNIST藏文手写数字数据集准确率98.8%+ 我们在博文,使用CNN做Kaggle比赛手写数字识别准确率99%+,在此基础之 ...

  4. svm对未知数据的分类_SVM对sklearn自带手写数字数据集进行分类

    sklearn自带一些数据集,其中手写数字数据集可通过load_digits加载,我找到load_digits里头是这样 def load_linnerud(): """ ...

  5. 用Python实现BP神经网络识别MNIST手写数字数据集(带GUI)

    概述 计算机神经网络则是人工智能中最为基础的也是较为重要的部分,它使用深度学习的方式模拟了人的神经元的工作,是一种全新的计算方法.本文的目标就是通过学习神经网络的相关知识,了解并掌握BP神经网络的实现 ...

  6. matlab 对mnist手写数字数据集进行判决分析_Python神经网络编程:手写数字的数据集MNIST...

    识别人的笔迹这个问题相对复杂,也非常模糊,因此这是一种检验人工智能的理想挑战.这不像进行大量数字相乘那样明确清晰. 让计算机准确区分图像中包含的内容,有时也称之为图像识别问题.科学家对这个问题进行了几 ...

  7. matlab 对mnist手写数字数据集进行判决分析_人工智能TensorFlow(十四)MINIST手写数字识别...

    MNIST是一个简单的视觉计算数据集,它是像下面这样手写的数字图片: MNIST 每张图片还额外有一个标签记录了图片上数字是几,例如上面几张图的标签就是:5.0.4.1. MINIST数据 MINIS ...

  8. 卷积神经网络(CNN)之MNIST手写数字数据集的实现

    MNIST数据集是一个非常经典的手写数字识别的数据集,本人很多文章都是拿这个数据集来做示例,MNIST的具体介绍与用法可以参阅: MNIST数据集手写数字识别(一)https://blog.csdn. ...

  9. [PyTorch] 基于Python和PyTorch的MNIST的手写数字数据集的分类

    文章目录 讲解 MNIST的介绍 须导入的函数库 检查 pytorch 的版本 定义超参数 下载 MNIST的数据集 定义网络 网络实例化 定义训练函数 定义测试函数 主函数 全部源代码 2020.0 ...

  10. 万物皆用MNIST---MNIST数据集及创建自己的手写数字数据集

    刚刚接触到人工智能的我们,必定会遇到一个非常非常非常熟悉的朋友------MNIST        这是一套流行的手写数字图片,常常被用来测试我们的思想和算法.这个数据集称为手写数字的MNIST数据库 ...

最新文章

  1. 从难免的线上bug说起代码的思考
  2. UITableViewCell 左侧滑动删除按钮 添加图片 (不完美解决)
  3. UA MATH523A 实分析3 积分理论例题 判断函数可积性的一个题目
  4. The xxx collides with a package/type
  5. dedecms 在模板里引入php文件夹,dedecms如何添加并引入php文件
  6. linux 时间怎么求差值_linux 时间戳及时间差计算
  7. 买基金你们都亏了多少钱?
  8. txt代码文件怎么转换_pdf怎么转换成txt格式?小说党速来get
  9. vbyone接口引脚定义_USB3.1 Type-C 高速接口设计指南
  10. 【Java就业培训教程】——单态设计模式
  11. 云表中表单配置内嵌浏览器
  12. STM32接电机驱动,杜邦线供电,然后反烧问题
  13. c语言输入一个整数打印出它是奇数还是偶数,1. 编写程序,输入一个整数,打印出它是奇数还是偶数....
  14. python使用pywinauto驱动微信客户端实现公众号爬虫
  15. 移动应用开发课堂总结
  16. 我讲了一个故事,珍爱红娘来电话靠谱吗?这个男生太渣了!
  17. 邢台一中2021年许计勇高考成绩查询,文理Top10!2020邢台高考成绩揭晓...
  18. 怎样在电脑上查学生的准考证
  19. TCP客户端与服务端开发
  20. 幼儿园小班计算机教案,幼儿园小班安全教案7篇

热门文章

  1. unity3d 之时间
  2. SQL Prompt快捷键整理(使用帮助)
  3. Android应用程序开发
  4. 制作U盘macos系统
  5. 操作系统——Windows 控制台命令
  6. 深入理解操作系统原理之操作系统概述
  7. oracle sql详细教程下载,Oracle SQL 实用基础教程 PPT
  8. 数据分析师人才需求的分析报告
  9. dwz 之 IE下 页面加载完了却一直提示数据加载中,请稍等...
  10. 完全卸载mysql数据库