手写python神经网络

栏目: 编程工具 · 发布时间: 5年前

内容简介:如果你已经读过了传统机器学习的书,相信你下一步就会对神经网络和深度学习产生兴趣,但却往往苦于不知道该从何入手。在这里我推荐给大家一本神经网络的好书给大家,对于没有任何数学基础的同学可以完全看懂整个数学证明原理,并且能实现出神经网络模型,而且本书非常轻薄,读起来就像故事一样:

如果你已经读过了传统机器学习的书,相信你下一步就会对神经网络和深度学习产生兴趣,但却往往苦于不知道该从何入手。

在这里我推荐给大家一本神经网络的好书给大家,对于没有任何数学基础的同学可以完全看懂整个数学证明原理,并且能实现出神经网络模型,而且本书非常轻薄,读起来就像故事一样:

手写 <a href='https://www.codercto.com/topics/20097.html'>python</a> 神经网络Python神经网络编程 》。

推荐学习方法

先读附录,把其中的微积分知识学习一下,然后再开始从头学习。

对于书中所有的证明,务必争取看懂,不要跳过。

唯一绊住我的地方就是梯度下降的公式推导,其中有一处Σ求和公式略带误导性,其关键在于微分公式中唯一的变量只有Wij(特指某一个权重),而其他的权重都是已知量,因此可以消解。

实现关键

神经网络的训练分为3步:

  • 信号前馈:根据权重矩阵,从输入层开始,逐层传递信号到输出层。
  • 误差反向传播:先计算输出层的误差,然后根据权重矩阵,反向逐层传播误差到各个层的神经元。
  • 梯度下降调整权重:因为计算出了所有层的每个神经元的误差,因此根据误差与权重之间的微分公式,可以根据误差值和当前权重算出此时的斜率,进而对权重进行一定的下降调整,这就是学习权重的过程,其目的就是误差最小化,当然这里需要通过学习率调节学习的速度。

我的实践

我的神经网络代码在这里: https://github.com/owenliang/NeuralNetwork

对于官方测试集的识别率接近97%左右,但对我个人手写的识别率要差很多,相信只有更高级的卷积模型才能进一步改善这个问题。

我另外改造了一版支持多个隐藏层的神经网络模型,但是发现增加更多的隐层并没有带来性能上升,反而精度下降了,据说这是因为模型过于复杂,而数据量太小并且过于简单,而这个更多隐层的神经网络应该就叫做深度神经网络了吧。

总结

读完这本书的感受是,理解神经网络一定要理解其数学原理,而如何把复杂的数学原理讲简单,这就是这本书的价值,可见作者水平之高。

博主无私的分享着知识,你愿意送他一顿热腾腾的早餐吗?

手写python神经网络

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

怎样解题

怎样解题

[美] G. 波利亚 / 涂泓、冯承天 / 上海科技教育出版社 / 2007-5 / 16.00元

怎样解题:数学思维的新方法,ISBN:9787542843876,作者:(美)波利亚 著;徐泓、冯承天 译一起来看看 《怎样解题》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器