码迷,mamicode.com
首页 > 其他好文 > 详细

用标准3层神经网络实现MNIST识别

时间:2018-07-10 21:43:39      阅读:1661      评论:0      收藏:0      [点我收藏+]

标签:10个   git   标签   完全   hub   初始   训练   des   地址   

一.MINIST数据集下载

1.https://pjreddie.com/projects/mnist-in-csv/      此网站提供了mnist_train.csv和mnist_test.csv,其中mnist_train.csv有60000个训练数据,mnist_test.csv有10000个测试数据

2.还有两个较小数据集,可供测试。

https://raw.githubusercontent.com/makeyourownneuralnetwork/makeyourownneuralnetwork/master/mnist_dataset/mnist_train_100.csv

https://raw.githubusercontent.com/makeyourownneuralnetwork/makeyourownneuralnetwork/master/mnist_dataset/mnist_test_10.csv

 

二.如上下载MNIST数据集,那么MNIST数据集到底是什么呢?是0~9的数字图像的集合,在MNIST数据集中数字图像用784个像素值表示,同一个数字图像有不同的像素值。下面我们可以看下MNIST数据集长什么样子。

1.我们可以用python的open函数加载mnist_train_100.csv数据集,取第一个集合,代码如下,非常简单:

技术分享图片

2.如下为输出的集合内容,他们是由785个数字组成,第一个数字为标签,即书写者实际希望表示的数字。后面的784个数字为书写体数字的像素值,范围在0~255之间,像素数组的尺寸为28*28.

技术分享图片

3.从这个长达784个值的列表中,人们很难看出这些数字组成了某人书写数字5的图像。我们可以利用上面的数据画出图像,看下到底是不是5?

还是利用python代码实现:

技术分享图片

如上,我们把上面的字符串按照","分割,转换成28*28的数组,绘制成图像,那么会是5吗,下面可以看下执行的记结果:

技术分享图片

确实很像5,下面MNIST基础已经讲解完全,下面我们进行用标准3层神经网络实现MNIST识别。

 

三.用标准3层神经网络实现MNIST识别

在做一件事之前我们要先明白我们的目的是什么?一个图片,我们用眼睛可以很直观的看出是什么,比如是花、人等。但是计算机没有眼睛,我们想让它识别图片怎么办呢,这就是我们的目的。我们的目的是让神经网络能识别数字图像。搭建3层神经网络,用MNIST训练数据集训练神经网络,训练完后我们用测试训练集来测试当我们输入一个数字图像的784个像素值时,神经网络到底能不能根据这些像素值来识别出数字图像是几。

 

1.准备MNIST训练数据。

1.>搭建3层标准神经网络,可以参考我以前的博客。https://www.cnblogs.com/bestExpert/p/9248353.html

2.>搭建完后需要确认3层的节点数目,上面我们说了数字图像是由784个像素值组成,所以输入层需要784个节点。隐藏层节点需要多少个并没有一个明确的规定,我们可以先尝试选择100个节点。输出层我们的目的是确认数字图像是几,所以输出层需要10个节点,对应数字图像0~9。综上我们得出,输入层784个节点,隐藏层100个节点,输出层10个节点。

3.>确定输入值,输入值最佳的范围为0.01~0.99,但是数字图片的像素值在0~255之间,所以我们需要缩小像素值,使其能达到0.01~0.99的范围。如下,用python实现输入值:

技术分享图片

4.>最后一步是确定目标值,上面我们已经说了输出层为10个节点,代表0~9,输出层数据的范围为0.01~0.99,我们可以假设一下,当输入层的像素值代表5的数字时,输出层第6个节点的输出信号应该最大,其他输出信号应该很小,处于抑制状态,这就是我们希望达到的状态,由此我们可以确定目标值应该是第6个节点输出值最大为0.99,其他输出值数据很小,为0.01,这就是我们希望达到的目标值。用python实现如下:

技术分享图片

5.>根据mnist_train_100.csv训练数据集来训练神经网络。优化权重。

targets为目标值数组,其中output_nodes为输出层节点数,为10,第一行代码创建一个长度为10的数组,初始值为0.01,第二行代码根据像素值的标签来设置数组中那个值为0.99。、

 以上步骤为第一阶段,搭建神经网络,确认3层节点,确定输入值、输出值,训练神经网络。上述综合代码比较多,需要的小伙伴可以在github上面下载,地址为:

 

2.测试网络。

 

用标准3层神经网络实现MNIST识别

标签:10个   git   标签   完全   hub   初始   训练   des   地址   

原文地址:https://www.cnblogs.com/bestExpert/p/9291185.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!