神经网络:简单手写数字识别神经网络
2016-12-01 23:16
831 查看
问题
如上,是一个手写数字序列,要识别这个序列,我们可以分成两部分:1.先把一个一个数字分割开来;2.逐个识别数字。
在我们人类看来,这项工作是简单的,但是对于计算机而言,是个复杂问题。
我们不妨把我们的注意力集中在第二个问题:识别单个数字。
解决方案
(这是一张“简略”的图,它省略了input layer上的部分neurons)
上图是解决问题的神经网络模型,它是一个三层神经网络。对于这样的神经网络,我们要解决问题,必须要有训练集来训练它。
我们所用到的训练集:大量28x28像素的图片(这些图片通过扫描一些手写数字得到),这些输入的像素是灰度级的,0.0代表白色,1.0代表黑色,介于两者之间为灰色。
由训练集可知,我们的input layer应该有28x28=784个neurons,上图简略了一些。
第二层是hidden layer,我们设置它的neurons有n个,上图中n=15
第三层是output layer,它有10个neurons(因为数字无非就是0~9),并且我们假定,如果第一个neuron被激活,ouput=1,那么就说是被到的数字为0,以此类推。(这个时候大家可能会问,要是多个neurons被激活呢?原文中说要取最大值的那个,但是如果有两个最大值,或者有两个以上最大值呢?)
一个问题
为什么输出层要用到10个neurons呢?直接采取二进制编码表示,用4个neurons就足够了。然而,实验证明,用10个比用4个更好,但是为什么?是什么实验证明?或者说用什么实验证明?一种解释(我持怀疑态度)
到底hidden neurons是怎么工作的呢?可以这样设定:把一张图片分成几个部分。hidden layer的第一个neuron负责下面部分的检查:而第二个,第三个,第四个neuron负责下面几个部分:
通过这四个neurons,就可以得出结论:
这个时候就激活第一个output neuron。(当然,这只是其中一种方法)
而如果采用二进制编码,当第一个neurons工作时,就要思考它所代表的二进制位
小结
上述离神经网络的应用还有有点差距,毕竟看起来更像启发式,而不是前面几个小结介绍的神经网络那种方法(例如与或非的实现)。对于4位编码的方法,也许存在一些学习算法可以更简单地解决问题相关文章推荐
- 用最简单的神经网络识别手写数字
- 四、用简单神经网络识别手写数字(内含代码详解及订正)
- Tensorflow手写数字识别之简单神经网络分类与CNN分类效果对比
- 《神经网络和深度学习》系列文章一:使用神经网络识别手写数字
- 神经网络实战示例一:神经网络中的参数调试研究——手写数字识别综合示例研究2
- 手把手入门神经网络系列(2)_74行代码实现手写数字识别
- 经典神经网络进行MNIST手写数字识别系列(一):ALEXNET
- 神经网络用于手写数字识别
- 第1章使用神经网络识别手写数字
- Python实现深度学习之-神经网络识别手写数字(更新中,更新日期:2017-07-12)
- 读书笔记-神经网络与深度学习(一)-使用神经网络识别手写数字
- 《神经网络与深度学习》第一章 使用神经网络来识别手写数字(三)- 用Python代码实现
- 神经网络用于手写数字识别更新版
- 手把手入门神经网络系列(2)_74行代码实现手写数字识别
- 手把手入门神经网络系列(2)_74行代码实现手写数字识别
- C++从零实现深度神经网络之六——实战手写数字识别(sigmoid和tanh)
- 《神经网络和深度学习》系列文章五:用简单的网络结构解决手写数字识别
- 手把手入门神经网络系列(2)_74行代码实现手写数字识别
- 手把手入门神经网络系列(2)_74行代码实现手写数字识别
- tensorflow1.1/循环神经网络手写数字啊识别