BP算法

发布时间:2015-06-25 19:47:12   来源:文档文库   
字号:

计算机智能第三次作业

.阐述BP算法的基本思想.

BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。由于多层前馈网络的训练经常采用误差反向传播算法,人们也常把将多层前馈网络直接称为BP网络。

.推导权值调整量的公式

6.求出各层各个系数之后,检查是否满足要求.如果满足,算法结束;如果未满足,则返回3执行,直到满足所有的输入输出要求为止.

.给出实现BP算法的程序框图

.编写BP算法的程序代码

Clear

%数据输入

huanghe_p=[370 503 434 575 490 420 560 640 558 343 326 405 446 423 422 697 598 377 435 472 451 667 601 689 541 485 425 389 382 707 422];

huanghe_t=[515 713 586 753 720 567 717 987 810 489 453 589 639 568 595 982 849 519 615 652 599 941 893 999 758 701 630 561 520 1040 535];

%归一化处理p=(huanghe_p-min(huanghe_p))/(max(huanghe_p)-min(huanghe_p));

t=(huanghe_t-min(huanghe_t))/(max(huanghe_t)-min(huanghe_t));

%数据输入2:网络有关参数

EPOCHS=10000;GOAL=0.000005;

%建立bp神经网络,并训练,仿真。其中输入为p,输出为t

%-------------------------隐层神经元确定-----------------------------

s=3:15;

%s 为常向量,表示神经元的个数res=zeros(size(s));%res将要存储误差向量,这里先置零pn=[p(1:5);p(6:10);p(11:15);p(16:20)];tn=[t(1:5);t(6:10);t(11:15);t(16:20)];

for i=1:length(s) 

net=newff(minmax(pn),[s(i),4],{'tansig','purelin'},'trainlm');    net.iw{1,1}=zeros(size(net.iw{1,1}))+0.5;

net.lw{2,1}=zeros(size(net.lw{2,1}))+0.75;

net.b{1,1}=zeros(size(net.b{1,1}))+0.5; 

net.b{2,1}=zeros(size(net.b{2,1}));   

net.trainParam.epochs=EPOCHS;     

net.trainParam.goal=GOAL;

net=train(net,pn,tn);

y=sim(net,pn);e=tn-y;error=mse(e,net);res(i)=norm(error);     

end

%选取最优神经元数,number为使得误差最小的隐层神经元个数number=find(res==min(res));

if(length(number)>1)

no=number(1)

else

no=numberendclear errorres%选定隐层神经元数目后,建立网络,训练仿真。net=newff(minmax(pn),[no,4],{'tansig','purelin'},'trainlm');    

net.iw{1,1}=zeros(size(net.iw{1,1}))+0.5;

net.lw{2,1}=zeros(size(net.lw{2,1}))+0.75;     

net.b{1,1}=zeros(size(net.b{1,1}))+0.5;     

net.b{2,1}=zeros(size(net.b{2,1}));     

net.trainParam.epochs=EPOCHS;     

net.trainParam.goal=GOAL;

net=train(net,pn,tn);

y=sim(net,pn);

e=tn-y;error=mse(e,net)

%error为网络的误差向量r=norm(error);

%r为网络的整体误差

save net                       

%保存最好的网络%预测input=[p(11:15);p(16:20);p(21:25);p(26:30)];yuce=sim(net,input);

%结果反归一化

y1=[y(1,:) y(2,:) y(3,:) y(4,:)];

yuce1=[yuce(1,:) yuce(2,:) yuce(3,:) yuce(4,:)];

t1=y1*(max(huanghe_t(1:20))-

min(huanghe_t(1:20)))+min(huanghe_t(1:20));

yuce2=yuce1*(max(huanghe_t(1:20))-min(huanghe_t(1:20)))+min(huanghe_t(1:20));%计算误差wucha=abs(t1-huanghe_t(1:20))./huanghe_t(1:20)b=minmax(wucha);average_wucha=mean(wucha);%作图

figure(1)

plot(1:20,huanghe_t(1:20),'*-',1:20,t1,'o:')

figure(2)

plot(1:20,huanghe_t(11:30),'*-',1:20,yuce2,'o:')

本文来源:https://www.2haoxitong.net/k/doc/fc591661b8f67c1cfbd6b83e.html

《BP算法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式