Python实现三层BP神经网络

来源:互联网 发布:牛顿环干涉实验数据 编辑:程序博客网 时间:2024/04/29 20:42

题外话

看论文,仿真实现,最基本的能力!研一的时候定要多看看论文,提升自己的代码能力!

引言

本篇博客默认读者有一定的BP神经网络的基础,BP神经网络的基本知识就不阐述了!

BP神经网络结构

本文内容:
1. 二分类的三层BP神经网络
2. 激活函数为sigmoid函数
3. 由于是二分类,输出函数和隐藏层函数都为sigmoid函数
4. 计算下一层节点的公式:y=wx+b

步骤

大概步骤:
1. 初始化weight和b的数据
2. 根据y=wx+b,来计算结果y
3. 根据loss_function来更新weight和b,根据梯度下降法,可以查看参考网址1

代码

https://github.com/paulpig/machine_learning/blob/master/fnn.py

注意点

此处为本篇博客的重点,也许你也像我一样能够根据参考网址,将代码编写出来了,但是无论训练多少次,实验结果都非常差!
本文提供四种思路:
1. 增加隐藏层的节点数量
2. 多增加一个输入层节点,将它作为偏移量b,或者每层每个节点都添加偏移量b,两者的效果是一样的!
3. weight的初始化定要慎重,weight的初始化大小要和节点的值相差不大,建议在(-2,2)之间取随机数!千万注意不可过大,也不可过小!
4. 原始数据的归一化操作,由于输入数据过大导致溢出
5. 增加训练次数或者调节步长
6. 增加动量因子,由于本文的训练的data比较小,没有出现局部最小情况,此处提供一种思路!

总结

  1. 递归下降法,真的理解到了数学有多么重要!
  2. 探索精神,出现实验结果不对的时候,心态不能乱,要想解密一样的玩的心态!心态真的太重要了!
  3. 之后将不断基于简单的BP神经网络来改进!

参考网址

  1. http://blog.csdn.net/google19890102/article/details/32723459
  2. http://www.cnblogs.com/Finley/p/5946000.html
原创粉丝点击