BP神经网络MATLAB实例(简单而经典)_2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
显示训练迭代过程(NaN 表 示不显示,缺省为 25)
net.trainParam.time
最大训练时间(缺省为 inf) traingd、 traingdm、 traingda、 traingdx、trainrp、traincgf、 traincgp、 traincgb、 trainscg、 trainbfg、trainoss、trainlm 动量因子(缺省 0.9) 学 习 率 lr 增 长 比 ( 缺 省 为 1.05) 表现函数增加最大比(缺省 为 1.04) 权值变化增加量(缺省为 traingdm、traingdx traingda、traingdx
学习神经网络的好助手,可以仿照其中的代码,只需修改个别参数便可以轻易实现自己需要完成的任务。
举例 2、利用三层 BP 神经网络来完成非线性函数的逼近任务, 其中隐层神经元个数为五个。 样本数据: 输入 X -1.0000 -0.9000 -0.8000 -0.7000 -0.6000 -0.5000 -0.4000 解: 看到期望输出的范围是 1,1 ,所以利用双极性 Sigmoid 函数作为转移函数。 程序如下: clear; clc; X=-1:0.1:1; D=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609... 0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -.0988... 0.3072 0.3960 0.3449 0.1816 -0.312 -0.2189 -0.3201]; figure;
BP 网络的训练函数 训练方法 梯度下降法
训练函数 traingd traingdm traingda traingdx trainrp traincgf
有动量的梯度下降法 自适应 lr 梯度下降法 自适应 lr 动量梯度下降法 弹性梯度下降法 Fletcher-Reeves 共轭梯度法
学习神经网络的好助手,可以仿照其中的代码,只需修改个别参数便可以轻易实现自己需要完成的任务。
%调用 TRAINGDM 算法训练 BP
%对 BP 网络进行仿真 %还原数据
1、BP 网络构建 (1)生成 BP 网络
net newff ( PR,[ S1 S 2...SNl ],{TF1 TF 2...TFNl}, BTF , BLF , PF ) PR :由 R 维的输入样本最小最大值构成的 R 2 维矩阵。 [ S1 S 2...SNl ] :各层的神经元个数。 {TF1 TF 2...TFNl} :各层的神经元传递函数。 BTF :训练用函数的名称。
所得结果如下:
输入层到中间层的权值: V -9.1669 7.3448 7.3761 4.8966 3.5 409
T
中间层各神经元的阈值: 6.5885 -2.4019 -0.9962 1.5303 3. 2731 中间层到输出层的权值: W 0.3427 0.2135 0.2981 -0.8840 1.91 34 输出层各神经元的阈值: T -1.5271
参数介绍 最大训练次数(缺省为 10)
训练函数 traingd、 traingdm、 traingda、 traingdx、trainrp、traincgf、 traincgp、 traincgb、 trainscg、 trainbfg、trainoss、trainlm traingd、 traingdm、 traingda、 traingdx、trainrp、traincgf、 traincgp、 traincgb、 trainscg、 trainbfg、trainoss、trainlm traingd、 traingdm、 traingda、 traingdx、trainrp、traincgf、 traincgp、 traincgb、 trainscg、 trainbfg、trainoss、trainlm traingd、 traingdm、 traingda、 traingdx、trainrp、traincgf、 traincgp、 traincgb、 trainscg、 trainbfg、trainoss、trainlm traingd、 traingdm、 traingda、 traingdx、trainrp、traincgf、 traincgp、 traincgb、 trainscg、 trainbfg、trainoss、trainlm traingd、 traingdm、 traingda、 traingdx、trainrp、traincgf、 traincgp、 traincgb、 trainscg、 trainbfg、trainoss、trainlm
学习神经网络的好助手,可以仿照其中的代码,只需修改个别参数便可以轻易实现自己需要完成的任务。
p=p1';t=t1'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
%原始数据归一化
net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx'); %设置网络,建立相应的 BP 网络,minmax(pn)找到 pn 矩阵的最大最小值 net.trainParam.show=2000; % 训练网络 net.trainParam.lr=0.01; net.trainParam.epochs=100000; net.trainParam.goal=1e-5; [net,tr]=train(net ,pn,tn); 网络 pnew=pnew1'; pnewn=tramnmx(pnew,minp,maxp); anewn=sim(net,pnewn); anew=postmnmx(anewn,mint,maxt); y=anew';
net.trainParam.goal
训练要求精度(缺省为 0)
net.trainParam.lr
学习率(缺省为 0.01)
net.trainParam.max_fail
最大失败次数(缺省为 5)
net.trainParam.min_grad
最小梯度要求(缺省为 1e-10)
net.trainParam.show
学习神经网络的好助手,可以仿照其中的代码,只需修改个别参数便可以轻易实现自己需要完成的任务。
1.2)
net.trainParam.delt_dec net.trainParam.delt0
权值变化减小量(缺省为 0.5) 权值变化最大值(缺省为 50.0) 一维线性搜索方法(缺省为 srchcha) 因为二次求导对权源自文库调整的 影响参数(缺省值 5.0e-5) Hessian 矩 阵 不 确 定 性 调 节 参数(缺省为 5.0e-7)
(2)网络训练
[net , tr , Y , E , Pf , Af ] train(net , P, T , Pi, Ai, VV , TV )
(3)网络仿真
[Y , Pf , Af , E , perf ] sim(net , P, Pi, Ai, T )
{'tansig','purelin'},'trainrp'
plot(X,D,'*'); %绘制原始数据分布图(附录:1-1) net = newff([-1 1],[5 1],{'tansig','tansig'}); net.trainParam.epochs = 1000; %训练的最大次数 net.trainParam.goal = 0.005; %全局最小误差 net = train(net,X,D); O = sim(net,X); figure;
Ploak-Ribiere 共轭梯度法 Powell-Beale 共轭梯度法 量化共轭梯度法 拟牛顿算法 一步正割算法 Levenberg-Marquardt BP 网络训练参数
traincgp traincgb trainscg trainbfg trainoss trainlm
训练参数
net.trainParam.epochs
输出 D -0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609
输入 X -0.3000 -0.2000 -0.1000 0 0.1000 0.2000 0.3000
输出 D 0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -0.0988
输入 X 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000
输出 D 0.3072 0.3960 0.3449 0.1816 -0.3120 -0.2189 -0.3201
plot(X,D,'*',X,O); %绘制训练后得到的结果和误差曲线(附录:1-2、1-3) V = net.iw{1,1};%输入层到中间层权值 W = net.lw{2,1};%中间层到输出层权值 theta1 = net.b{1};%中间层各神经元阈值 theta2 = net.b{2};%输出层各神经元阈值
net.trainParam.epochs=300; net.trainParam.goal=1e-5; [net,tr]=train(net,P,T); net.iw{1,1}%隐层权值 net.b{1}%隐层阈值
%训练开始
%设置精确度
net.lw{2,1}%输出层权值 net.b{2}%输出层阈值 sim(net,P)
T
举例 3、利用三层 BP 神经网络来完成非线性函数的逼近任务, 其中隐层神经元个数为五个。 样本数据:
net.trainParam.mc
net.trainParam.lr_inc net.trainParam.lr_dec
学习率 lr 下降比 (缺省为 0.7) traingda、traingdx traingda、traingdx trainrp
net.trainParam.max_perf_inc net.trainParam.delt_inc
net.trainParam.mu
net.trainParam.mu_dec net.trainParam.mu_inc net.trainParam.mu_max
控制 计算 机内存 / 速度 的参 trainlm 量, 内存较大设为 1, 否则设 为 2(缺省为 1) 的初始值(缺省为 0.001) trainlm 的减小率(缺省为 0.1) trainlm
'tansig','purelin'神经网络第一层和第二层的转移函数;'trainrp'网络训练函数。 net.trainParam.show=50; net.trainParam.lr=0.05; %最多显示训练步数 %设置训练次数, %学习率(缺省为 0.01)
%minmax(P) 取 P 的 最 大 最 小 值 ; [5,1] 第 一 次 神 经 元 5 个 , 第 二 层 1 个 ;
trainrp
初始权值变化 (缺省为 0.07) trainrp trainrp traincgf、 traincgp、 traincgb、 trainbfg、trainoss trainscg trainscg
net.trainParam.deltamax net.trainParam.searchFcn net.trainParam.sigma net.trainParam.lambda net.trainParam.men_reduc
的增长率(缺省为 10) trainlm 的最大值(缺省为 1e10) trainlm
2、BP 网络举例 举例 1、 %traingd clear; clc; P=[-1 -1 2 2 4;0 5 0 5 7]; T=[-1 -1 1 1 -1];
%利用 minmax 函数求输入样本范围 net = newff(minmax(P),[5,1],{'tansig','purelin'},'trainrp');