神经网络——Python实现BP神经网络算法(理论+例子+程序)

Python139

采用BP算法的多层感知器是至今为止应用最广泛的神经网络,在多层感知器的应用中,以图3-15所示的单隐层网络的应用最为普遍。一般习惯将单隐层前馈网称为三层感知器,所谓三层包括了输入层、隐层和输出层。

算法最终结果采用梯度下降法,具体详细过程此处就省略了!

标准BP算法在调整权值时,只按t时刻误差的梯度降方向调整,而没有考虑t时刻以前的梯度方向,从而常使训练过程发生振荡,收敛缓慢。为了提高网络的训练速度,可以在权值调整公式中增加一动量项。若用W代表某层权矩阵,X代表某层输入向量,则含有动量项的权值调整向量表达式为

可以看出,增加动量项即从前一次权值调整量中取出一部分迭加到本次权值调整量中,α称为动量系数,一般有a∈ (0,1)。动量项反映了以前积累的调整经验,对于t时刻的调整起阻尼作用。当误差曲面出现骤然起伏时,可减小振荡趋势,提高训练速度。目前,BP算法中都增加了动量项,以致于有动量项的BP算法成为一种新的标准算法。

这里,为了使用该算法,给出了一个简单的例子(一个不需要标准化或标准化的例子)。

[En]

Here, in order to use the algorithm, a brief example is given (an example that does not require normalization or standardization).

输入 X=-1:0.1:1;
输出 D=.....(具体查看代码里面的数据)

为了便于查看结果我们输出把结果绘制为图形,如下:

其中黄线和蓝线代表着训练完成后的输出与输入

```python

-- coding: utf-8 --

import math

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长