欢迎来到天天文库
浏览记录
ID:57258609
大小:14.50 KB
页数:2页
时间:2020-08-07
《经典BP神经网络程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、functionmain()SamNum=100;%训练样本数TestSamNum=101;%测试样本数HiddenUnitNum=10;%隐节点数InDim=1;%输入样本维数OutDim=1;%输出维数%下面是一个函数rand('state',sum(100*clock))NoiseVar=0.1;Noise=NoiseVar*randn(1,SamNum);SamIn=8*rand(1,SamNum)-4;SamOutNoNoise=1.1*(1-SamIn+2*SamIn.^2).*exp(-SamIn.^2/2
2、);SamOut=SamOutNoNoise+Noise;TestSamIn=-4:0.08:4;TestSamOut=1.1*(1-TestSamIn+2*TestSamIn.^2).*exp(-TestSamIn.^2/2);figureholdongridplot(SamIn,SamOut,'k*')figureplot(TestSamIn,TestSamOut,'k--')xlabel('Inputx');ylabel('Outputy');%以下BP算法是用来逼近上面的函数。。。。。。。。。。。。。。。。。。。
3、。。。。。。MaxEpochs=20000;%最大训练次数lr=0.003;%学习率E0=0.5;%目标误差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;%输出层初始阈值W1Ex=[W1B1];%输入层到隐层的初始权值扩展W2Ex=[W2B
4、2];%隐层到输出层的初始权值扩展SamInEx=[SamIn'ones(SamNum,1)]';%输入样本扩展ErrHistory=[];%记录权值调整后的训练误差fori=1:MaxEpochs%正向计算网络各层输出HiddenOut=logsig(W1Ex*SamInEx);HiddenOutEx=[HiddenOut'ones(SamNum,1)]';NetworkOut=W2Ex*HiddenOutEx;%判断训练是否停止Error=SamOut-NetworkOut;SSE=sumsqr(Error)%记录每
5、次权值调整后的训练误差ErrHistory=[ErrHistorySSE];ifSSE6、%以下显示计算结果iW1=W1Ex(:,1:InDim)B1=W1Ex(:,InDim+1)W2B2=W2Ex(:,1+HiddenUnitNum);%测试TestHiddenOut=logsig(W1*TestSamIn+repmat(B1,1,TestSamNum));TestNNOut=W2*TestHiddenOut+repmat(B2,1,TestSamNum);figureplot(TestSamIn,TestNNOut,'k-');xlabel('InputTestSamIn');ylabel('Outpu7、tTestNNOut');%绘制学习误差曲线figureholdongrid[xx,Num]=size(ErrHistory);plot(1:Num,ErrHistory,'K-');
6、%以下显示计算结果iW1=W1Ex(:,1:InDim)B1=W1Ex(:,InDim+1)W2B2=W2Ex(:,1+HiddenUnitNum);%测试TestHiddenOut=logsig(W1*TestSamIn+repmat(B1,1,TestSamNum));TestNNOut=W2*TestHiddenOut+repmat(B2,1,TestSamNum);figureplot(TestSamIn,TestNNOut,'k-');xlabel('InputTestSamIn');ylabel('Outpu
7、tTestNNOut');%绘制学习误差曲线figureholdongrid[xx,Num]=size(ErrHistory);plot(1:Num,ErrHistory,'K-');
此文档下载收益归作者所有