如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
基于Matlab神经网络工具的BP网络实例(注释很详细)2011-07-2008:51:48|分类:HYPERLINK"http://xiaxianghua2006.blog.163.com/blog/"\l"m=0&t=1&c=fks_084064086084080074084094087095080094088071087083086068"\o"专业"专业|字号订阅clearclccloseallwarningoff%数据输入huanghe_p=[370503434575490420560640558343326405446423422697598377435472451667601689541485425389382707422];huanghe_t=[5157135867537205677179878104894535896395685959828495196156525999418939997587016305615201040535];%归一化处理p=(huanghe_p-min(huanghe_p))/(max(huanghe_p)-min(huanghe_p));t=(huanghe_t-min(huanghe_t))/(max(huanghe_t)-min(huanghe_t));%网络有关参数EPOCHS=10000;GOAL=0.000005;LR=0.01;MAX_FAIL=100;%建立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)];fori=1:length(s)%7.0版本使用下面代码%输出层的神经元个数必须等于tn的行数%每层的传递函数可以自己指定%创建了2层网路,隐层s(i)(任意);输出层4(由tn决定不可改,但需输入)%net=newff(minmax(pn),[s(i),4],{'tansig','purelin'},'trainlm');%%7.6版本使用下面的代码%输出层神经元由tn决定,不需要输入,我们只需要确定输入层和隐层的神经元个数%所有层的传递函数都可以自己定义%创建3层网络,输入层8(任意);隐层s(i)(任意);输出层4(由tn决定,不可改,不需要输入)%%其实两个版本的区别在于7.6的bp网络创建函数直接给出了t,故最后一层不需要指定了,故相同的参数时,7.6的会多一层%net=newff(pn,tn,[4,s(i)],{'tansig','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.trainParam.lr=LR;net.trainParam.max_fail=MAX_FAIL;net=train(net,pn,tn);y=sim(net,pn);e=tn-y;error=mse(e,net);res(i)=norm(error);end%选取最优神经元数,number为使得误差最小的隐层神经元个数[ttmp2,ind]=min(res);no=s(ind);%选定隐层神经元数目后,建立网络,训练仿真。%7.0版本%net=newff(minmax(pn),[no,4],{'tansig','purelin'},'trainlm');%7.6版本net=newff(pn,tn,[4,no],{'tansig','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.ep