手写数字数据集——MINST的读取及预处理
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的读取及预处理相关推荐
- BP算法实现--minst手写数字数据集识别
实验步骤 初始化网络架构 网络层数,每层神经元数,连接神经元的突触权重,每个神经元的偏置 构造bp算法函数 对于一个输入数据,前向计算每层的输出值,保存未激活的输出和激活过的输出值,这里用的激活函数是 ...
- 将MNIST手写数字数据集导入NumPy数组(《深度学习入门:基于Python的理论与实现》实践笔记)
将MNIST手写数字数据集导入NumPy数组(<深度学习入门:基于Python的理论与实现>实践笔记) 一.下载MNIST数据集(使用urllib.request.urlretrieve( ...
- [TensorFlow深度学习入门]实战九·用CNN做科赛网TibetanMNIST藏文手写数字数据集准确率98%+
[TensorFlow深度学习入门]实战九·用CNN做科赛网TibetanMNIST藏文手写数字数据集准确率98.8%+ 我们在博文,使用CNN做Kaggle比赛手写数字识别准确率99%+,在此基础之 ...
- svm对未知数据的分类_SVM对sklearn自带手写数字数据集进行分类
sklearn自带一些数据集,其中手写数字数据集可通过load_digits加载,我找到load_digits里头是这样 def load_linnerud(): """ ...
- 用Python实现BP神经网络识别MNIST手写数字数据集(带GUI)
概述 计算机神经网络则是人工智能中最为基础的也是较为重要的部分,它使用深度学习的方式模拟了人的神经元的工作,是一种全新的计算方法.本文的目标就是通过学习神经网络的相关知识,了解并掌握BP神经网络的实现 ...
- matlab 对mnist手写数字数据集进行判决分析_Python神经网络编程:手写数字的数据集MNIST...
识别人的笔迹这个问题相对复杂,也非常模糊,因此这是一种检验人工智能的理想挑战.这不像进行大量数字相乘那样明确清晰. 让计算机准确区分图像中包含的内容,有时也称之为图像识别问题.科学家对这个问题进行了几 ...
- matlab 对mnist手写数字数据集进行判决分析_人工智能TensorFlow(十四)MINIST手写数字识别...
MNIST是一个简单的视觉计算数据集,它是像下面这样手写的数字图片: MNIST 每张图片还额外有一个标签记录了图片上数字是几,例如上面几张图的标签就是:5.0.4.1. MINIST数据 MINIS ...
- 卷积神经网络(CNN)之MNIST手写数字数据集的实现
MNIST数据集是一个非常经典的手写数字识别的数据集,本人很多文章都是拿这个数据集来做示例,MNIST的具体介绍与用法可以参阅: MNIST数据集手写数字识别(一)https://blog.csdn. ...
- [PyTorch] 基于Python和PyTorch的MNIST的手写数字数据集的分类
文章目录 讲解 MNIST的介绍 须导入的函数库 检查 pytorch 的版本 定义超参数 下载 MNIST的数据集 定义网络 网络实例化 定义训练函数 定义测试函数 主函数 全部源代码 2020.0 ...
- 万物皆用MNIST---MNIST数据集及创建自己的手写数字数据集
刚刚接触到人工智能的我们,必定会遇到一个非常非常非常熟悉的朋友------MNIST 这是一套流行的手写数字图片,常常被用来测试我们的思想和算法.这个数据集称为手写数字的MNIST数据库 ...
最新文章
- 从难免的线上bug说起代码的思考
- UITableViewCell 左侧滑动删除按钮 添加图片 (不完美解决)
- UA MATH523A 实分析3 积分理论例题 判断函数可积性的一个题目
- The xxx collides with a package/type
- dedecms 在模板里引入php文件夹,dedecms如何添加并引入php文件
- linux 时间怎么求差值_linux 时间戳及时间差计算
- 买基金你们都亏了多少钱?
- txt代码文件怎么转换_pdf怎么转换成txt格式?小说党速来get
- vbyone接口引脚定义_USB3.1 Type-C 高速接口设计指南
- 【Java就业培训教程】——单态设计模式
- 云表中表单配置内嵌浏览器
- STM32接电机驱动,杜邦线供电,然后反烧问题
- c语言输入一个整数打印出它是奇数还是偶数,1. 编写程序,输入一个整数,打印出它是奇数还是偶数....
- python使用pywinauto驱动微信客户端实现公众号爬虫
- 移动应用开发课堂总结
- 我讲了一个故事,珍爱红娘来电话靠谱吗?这个男生太渣了!
- 邢台一中2021年许计勇高考成绩查询,文理Top10!2020邢台高考成绩揭晓...
- 怎样在电脑上查学生的准考证
- TCP客户端与服务端开发
- 幼儿园小班计算机教案,幼儿园小班安全教案7篇