BP系统建模.docx

上传人:b****5 文档编号:7420214 上传时间:2023-05-11 格式:DOCX 页数:12 大小:77.25KB
下载 相关 举报
BP系统建模.docx_第1页
第1页 / 共12页
BP系统建模.docx_第2页
第2页 / 共12页
BP系统建模.docx_第3页
第3页 / 共12页
BP系统建模.docx_第4页
第4页 / 共12页
BP系统建模.docx_第5页
第5页 / 共12页
BP系统建模.docx_第6页
第6页 / 共12页
BP系统建模.docx_第7页
第7页 / 共12页
BP系统建模.docx_第8页
第8页 / 共12页
BP系统建模.docx_第9页
第9页 / 共12页
BP系统建模.docx_第10页
第10页 / 共12页
BP系统建模.docx_第11页
第11页 / 共12页
BP系统建模.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

BP系统建模.docx

《BP系统建模.docx》由会员分享,可在线阅读,更多相关《BP系统建模.docx(12页珍藏版)》请在冰点文库上搜索。

BP系统建模.docx

BP系统建模

采用BP神经网络:

所要拟合的非线性函数为:

其中:

x

(-44)

各个训练参数:

隐层神经元个数:

10设置输入范围:

(-44)学习步长:

lr=0.005

迭代结束条件:

E0=0.01初始权值和阈值选取:

(-0.10.1)

functionmain();

clearall;

closeall;

samnum=101;%用101个数据对来训练神经网络

testsamum=101;%用另外101个数据对来验证神经网络的学习效果

hiddenunitnum=10;%隐单元数目定义为10

indim=1;%输入层神经元数目定义为1

outdim=1;%输出层神经元数目定义为1

rand('state',sum(100*clock));%设置随机数产生的模式

samin=8*rand(1,samnum)-4;%设置输入为(-4,4)

samout=samin.*sin(samin)+4*exp(-samin.^2)+0.1*samin;%计算相应的输出

testsamin=-4:

0.08:

4;%生成用于检验的数据

testsamout=testsamin.*sin(testsamin)+4*exp(-testsamin.^2)+0.1*testsamin;

maxepochs=10000;%最大的迭代次数

lr=0.005;%学习步长

E0=0.01;%结束迭代的另一个条件,总误差

w1=0.2*rand(hiddenunitnum,indim)-0.1;%初始权值和阈值选取为(-0.1,0.1)

b1=0.2*rand(hiddenunitnum,1)-0.1;

w2=0.2*rand(outdim,hiddenunitnum)-0.1;

b2=0.2*rand(outdim,1)-0.1;

w1ex=[w1b1];

w2ex=[w2b2];

saminex=[samin'ones(samnum,1)]';

errorhistory=[];

fori=1:

maxepochs

hiddenout=logsig(w1ex*saminex);%前向计算(输入层至隐层,采用S函数

hiddenoutex=[hiddenout'ones(samnum,1)]';

networkout=w2ex*hiddenoutex;%计算系统输出

error=samout-networkout;%计算网络输出与期望输出误差

SSE=sumsqr(error);%计算二次总误差

errorhistory=[errorhistorySSE];

ifSSE

delta2=error;

delta1=w2'*delta2.*hiddenout.*(1-hiddenout);%根据权值修改公式,计算权值

%修改量

dw2ex=delta2*hiddenoutex';

dw1ex=delta1*saminex';

w1ex=w1ex+lr*dw1ex;%修改权值

w2ex=w2ex+lr*dw2ex;

w2=w2ex(:

1:

hiddenunitnum);

end;

testinex=[testsamin'ones(testsamum,1)]';

testhiddenout=logsig(w1ex*testinex);%应用测试数据测试

testhiddenoutex=[testhiddenout'ones(testsamum,1)]';%神经网络的泛化能力

testnnout=w2ex*testhiddenoutex;

figure

holdon

grid

plot(testsamin,testsamout,'r+');%输出测试曲线

plot(testsamin,testnnout,'k-');

figure%输出结果学习误差曲线

holdon

grid

[xx,num]=size(errorhistory);

plot(1:

num,errorhistory,'r-');

一.初始权值和学习步长不变,隐层神经元个数改变。

若w1=0.2*rand(hiddenunitnum,indim)-0.1;

b1=0.2*rand(hiddenunitnum,1)-0.1;

w2=0.2*rand(outdim,hiddenunitnum)-0.1;

b2=0.2*rand(outdim,1)-0.1;

(1)隐层神经元个数hiddenunitnum=5

仿真结果如下:

(2)隐层神经元个数hiddenunitnum=20

仿真结果如下:

二、隐层神经元个数和学习步长不变,初始权值改变

(1)初始权值如下:

w1=0.8*rand(hiddenunitnum,indim)-0.4;

b1=0.8*rand(hiddenunitnum,1)-0.4;

w2=0.8*rand(outdim,hiddenunitnum)-0.4;

b2=0.8*rand(outdim,1)-0.4;

仿真结果如下:

(2)、初始权值如下:

w1=0.1*rand(hiddenunitnum,indim)-0.05;

b1=0.1*rand(hiddenunitnum,1)-0.05;

w2=0.1*rand(outdim,hiddenunitnum)-0.05;

b2=0.1*rand(outdim,1)-0.05;

仿真结果如下:

三.隐层神经元个数和初始权值不变,学习步长改变

(1)学习步长lr=0.01

 

(2)学习步长lr=0.008

(3)学习步长lr=0.003

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2