实验题目:神经网络数值实验计算智能与智能系统》课程实验实验一、利用感知器进行分类输入代码:%画输入向量的图像P=[-0.5-0.5+0.3-0.1-4;-0.5+0.5-0.5+1.05];T=[11001];plotpv(P,T);%plotpv函数利用感知器的输入向量和目标向量来画输入向量的图像%建立神经网络net=newp([-401;-150],1);holdon%添加神经元的初始化值到分类图linehandle=plotpc(net.IW{1},net.b{1});%plotpc函数用来画分类线%训练神经网络E=1;%E为误差net.adaptParam.passes=3;%决定在训练过程中重复次数while(sse(E))%sse函数是用来判定误差E的函数[net,Y,E]=adapt(net,P,T);%利用输入样本调节神经网netlinehandle=plotpc(net.IW{1},net.b{1},linehandle);%画出调整以后的分类线drawnow;%延迟一段时间end%模拟simp=[0.7;1.2];a=sim(net,p);%利用模拟函数sim计算出新输入p的神经网络的输出plotpv(p,a);circle=findobj(gca,'type','line');set(circle,'Color','red');holdon;plotpv(P,T);plotpc(net.IW{1},net.b{1});holdoff;axis([-22-22]);NaunlTraining[rr^r.inl口cTi□Flab|Per^orrnoncBi〔口bbrfeTrflinngSiubc(pkrhrBinsIfft)?)title('未训练网络的输出结果');xlabel('时间');ylabel('仿真输出一一原函数一');%进行网络训练net.trainParam.epochs=50;net.trainParam.goal=0.01;net=train(net,p,t);%进行网络测试y2=sim(net,p);figure;plot(p,t,'-',p,y1,'--',p,y2,'-.')title('训练后网络的输出结果');xlabel('时间');ylabel('仿真输出');输出:结果分析:从上图可知,没有经过训练的网络,其输出结果模拟效果比较差,经过训练的BP神经网络的模拟效果较好。(2)改变非线性函数的K值输入代码:k=5;p=[-1:.05:1];t=sin(k*pi*p);plot(p,t,'-')title('要逼近的非线性函数');xlabel('时间');NeuralNef*-orlcTr^ririg(nFtr-sHotJ)□X5QEpoch:TlnwipErfarmanctQriadiarThMuiV^EdjtianChixkA?必帥00LDO.-7PtrtoiTflMic*gaalwt•D月」}£44-Q2D0.2D4时间鏗遏近的屮•践咗慚86^4202£6-■6C-aa出母舟-Ma5t划.斗-1^-3]2Dgd如.41。角11吕。启D.Q1时Sthl•StepTrniningOCai>rslI~~■^npTrailing~~II~~■niMiiii—输出:ylabel('非线性函数');n=10;net=newff(minmax(p),[n,1],{'tansig''purelin'},'trainlm');%对于该初始网络,可以应用sim()函数观察网络输出y1=sim(net,p);%同时绘制网络输出曲线,并与原函数相比较figure;plot(p,t,'-',p,y1,'--')title('未训练网络的输出结果');xlabel('时I、可');ylabel('仿真输出一一原函数一');net.trainParam.epochs=50;net.trainParam.goal=0.01;net=train(net,p,t);y2=sim(net,p);figure;plot(p,t,'-',p,y1,'--',p,y2,'-.')title('训练后网络的输出结果');xlabel('时I、可');ylabel('仿真输出');#PtWerityirK#4011Fk-urjilFEwarkLJi^rUjarTrainingSEA»(planrdiraia:a|RjAgrftEckinifpZw护IEW;*JActInter^L0Uepocht*NdTHOfkTrfifringInnErainEacI)□X”IIIIIIIII-1-DS闲.E-C.44J20U.2E4Q.5D.B吋何但不影响网络的训练效果。”1IIIIIIIIII■1Zl.HC.iEOJ-<1.2EOJU.4DfiO.B时何结果分析:k值只改变了非线性函数的频率(3)隐层神经元数目的影响k=5;p=[-1:.05:1];t=sin(k*pi*p);plot(p,t,'-')title('要逼近的非线性函数');xlabel('时间');ylabel('非线性函数');n=50;net=newff(minmax(p),[n,1],{'tansig''purelin'},'trainlm');%对于该初始网络,可以应用sim()函数观察网络输出y1=sim(net,p);%同时绘制网络输出曲线,并与原函数相比较figure;plot(p,t,'-',p,y1,'--')title('未训练网络的输出结果');xlabel('时间');ylabel('仿真输出--原函数-');net.trainParam.epochs=50;net.trainParam.goal=0.01;net=train(net,p,t);y2=sim(net,p);figure;plot(p,t,'-',p,y1,'--',p,y2,'-.')title('训练后网络的输出结果');xlabel('时间');ylabel('仿真输出');输出:鼻NeuralINdwc『kTrdinirigfrir?tr&inti□口I]□X虽训炼后网绻的期當结杲%同时绘制网络输出曲线,并与原函数相比较figure;plot3(x,y,z,'-',x,y,z1,'r--')title('未训练网络的输出结果');gridon;%训练网络net.trainParam.epochs=100;%训练时间net.trainParam.goal=0.0001;%精度设置net=train(net,[x;y],z);%训练后输出z2=sim(net,[x;y]);figure;plot3(x,y,z,'-',x,y,z1,'r--',x,y,z2,'g-.');title('训练后网络的输出结果');gridon;输出:#NeuralNewarkTraining".nntraintaollAljiorlVhmfI>yl3Dnfl^ion:TraningiP^Tormflnw;CalculaliDn^R^ndnrn(drviderandlLnentiei'g-iMarqd^FdtlidinliniMeanSqualidError[ex]MEX[PE"魅Ep^dh;TimeiPEmmEi:曰Grad^rM*MLEValidffiionCh^ck^:OODOKBUMfl-D7UMe+101[PflrfarmHncHi(pJotpr-lorrT-^TrainingSl3tF1刚口住5帛弓佃忖1RjfgFMsioritpJEvgrewiorilPlotIn氓ivak■1中口知ji<■■|>IHi«■■>!■■■illiill■■■■Inn|6◎C»cd鼻NeuralINdwc『kTrdinirigfrir?tr&inti□口I]□X