当前位置:   article > 正文

BP神经网络学习笔记_bp神经网络隐含层神经元个数

bp神经网络隐含层神经元个数

(本文为自我总结的BP神经网络学习笔记,读者可能会有些地方不懂或者认为有错误的地方,请留言赐教或交流)

神经网络的构成为:输入层、隐含层、输出层;

每层都含有数个神经元;

X1,X2,……,Xn 为输入层神经元,其中n为神经元的个数;

h1,h2,……,hp为隐含层神经元,其中p为隐含层神经元的个数;

 

    隐层神经元的个数一般是由经验确定无固定公式,参照:p = (n + m)  + a,

    其中,n为输入层神经元个数, m为输出层神经元个数, a为[1,10]之间的常数

y1,y2,……,ym 为输出层神经元,其中m为输出层神经元的个数;

每层神经元有加权值w和截距b参数;(这里类似于一次函数的转换关系)

这里权值w和截距b一般选择在[0,1]之间的随机数;

激励函数:隐含层和输出层神经元中的每个神经元都有激励函数,一般激励函数都用sigmoid函数,这个函数的输出在[0,1]或者[-1,1]之间;

正向传递过程是(以单个隐含层为例):输入层,经过加权加参后,作为隐含层的输入,传入隐含层,经过隐含层的激励函数得到隐含层的输出,这个输出经过加权加参,作为输出层的输入,再经过输出层神经元的激励函数,得到输出;

反向训练:这个过程是通过训练函数,从实际输出值与目标输出值的误差出发,计算每个权值w和截距b对误差的影响,通过反复迭代,从而反复修改这两个参数,最后使训练集数据的实际输出与目标输出的误差达到最小;

训练函数有几种:  1,traingd;(标准BP算法)

                            2,traingdm;(增加动量法)

                            3,traingdx;(自适应学习率)

                            4,trainrp;(弹性BP算法)

                            5,trainlm;(Levenberg-Marquardt,也称为L-M算法,经常用这个)

 

接下来,介绍神经网络的步骤:

1. 首先进行初始化,即确定要输入数据所对应的目标输出,加权值w和截距b;

2. 正向传递,即输入数据通过隐含层和输出层得到实际输出;

这里在输入的数据中,需要对数据进行归一化,因为sigmoid函数的输出在[0,1]或者[-1,1]之间;

3. 误差反向传播,即计算实际输出与目标输出的误差,然后通过训练函数反向训练,计算w和b对误差的影响;

4. 修改权值,即通过计算后得到影响则对其修改,实际计算中有个学习速率作为其修改参数;

5. 重新验证误差精度;

重复上诉步骤进行迭代。

 

泛化过程:最后得到训练好的神经网络之后,利用新的数据作为输入,得到的输出就是我们想要的输出。

 

在故障诊断中的应用:

例如在正常数据的输出为(0,0,0),故障类别中规定了(1,0,0)(0,1,0)(0,0,1)这三种故障;

那么我们只需要选取的输出神经元个数为3(注意:这里的3不是对应三种,而是对应的3个输出值);

例如我们通过一个(21,9,3)结构的神经网络(21为输入层神经元个数,9为隐含层神经元个数,3为输出层神经元个数);

输入21个特征数据得到输出为(0.11, 0.95,0.12),那么我们通过误差计算就可以判定为是第二种(0,1,0)故障类别。

 

下面举个matlab例子,引荐于:https://www.cnblogs.com/sallybin/p/3169572.html

 

根据表1,预测序号15的跳高成绩。

表1               国内男子跳高运动员各项素质指标

序号

跳高成绩()

30行进跑(s)

立定三级跳远()

助跑摸高()

助跑4—6步跳高()<

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/314245
推荐阅读
相关标签
  

闽ICP备14008679号