《神经网络实用教程讲解与源码.ppt》由会员分享,可在线阅读,更多相关《神经网络实用教程讲解与源码.ppt(104页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、神经网络实用教程讲解与源码 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望实验二实验二MATLABMATLAB快速入快速入门门实验二实验二MATLABMATLAB快速入门快速入门 p3 3、使用、使用MATLABMATLAB中的条件语句和循环语句,中的条件语句和循环语句,编程实现下面的功能:编程实现下面的功能:从从1 1累加到累加到2020,即:,即:1+2+3+4+1+2+3+4+20+20,当累,当累加和超过加和超过3030时,跳出时,跳出FORFOR循环,在
2、命令窗循环,在命令窗口中输出此时的累加次数和累加值。口中输出此时的累加次数和累加值。演示程序演示程序 psum=0;sum=0;pfor i=1:20for i=1:20p sum=sum+i;sum=sum+i;p if sum30 if sum30p%break;%break;p disp(sum is 30)disp(sum is 30)p fprintf(%2d,sum)fprintf(%2d,sum)p x=1 x=1p continue;continue;p end endpendendpi ipsumsum实验二实验二MATLABMATLAB快速入门快速入门p4 4、神经网络常用
3、的激活函数有、神经网络常用的激活函数有S S型、对型、对数数S S型、线性型和硬限幅等,在型、线性型和硬限幅等,在MATLABMATLAB中中有有tansig()tansig()、logsig()logsig()、purelin()purelin()和和hardlimhardlim()()四个函数对应,请使用四个函数对应,请使用MATLABMATLAB编程,按编程,按下画所示图形,画出四个激活函数的图形。下画所示图形,画出四个激活函数的图形。演示程序演示程序 px=-10:0.2:10;x=-10:0.2:10;py1=tansig(x);y1=tansig(x);py2=logsig(x);
4、y2=logsig(x);py3=purelin(x);y3=purelin(x);py4=hardlim(x);y4=hardlim(x);ph=figure(name,h=figure(name,这是一个显示多个激活函数图形的程序这是一个显示多个激活函数图形的程序););psubplot(2,2,1);subplot(2,2,1);p%绘制第一个图形绘制第一个图形phnd1=plot(x,y1);hnd1=plot(x,y1);p%设置图形线条宽度设置图形线条宽度pset(hnd1,linewidth,1);set(hnd1,linewidth,1);p%设置图形线条颜色设置图形线条颜色p
5、set(hnd1,color,red);set(hnd1,color,red);ptitle(Stitle(S型激活函数型激活函数););plegend(tansig);legend(tansig);pgrid on grid on p%设置第二个图形的绘图位置为第一行第二列设置第二个图形的绘图位置为第一行第二列 psubplot(2,2,2);subplot(2,2,2);p hnd2=plot(x,y2);hnd2=plot(x,y2);p%设置图形线条宽度设置图形线条宽度pset(hnd2,linewidth,2);set(hnd2,linewidth,2);p%设置图形线条颜色设置图形
6、线条颜色pset(hnd2,color,green);set(hnd2,color,green);ptitle(title(对数对数S S型激活函数型激活函数););plegend(logsig);legend(logsig);pgrid ongrid onp%设置第三个图形的绘图位置为第二行第一列设置第三个图形的绘图位置为第二行第一列p subplot(2,2,3);subplot(2,2,3);p hnd3=plot(x,y3);hnd3=plot(x,y3);p%设置图形线条宽度设置图形线条宽度pset(hnd3,linewidth,3);set(hnd3,linewidth,3);p%
7、设置图形线条颜色设置图形线条颜色pset(hnd3,color,blue);set(hnd3,color,blue);ptitle(title(线性激活函数线性激活函数););plegend(purelin);legend(purelin);pgrid ongrid onp%设置第四个图形的绘图位置为第二行第二列设置第四个图形的绘图位置为第二行第二列p subplot(2,2,4);subplot(2,2,4);p hnd4=plot(x,y4);hnd4=plot(x,y4);p%设置图形线条宽度设置图形线条宽度pset(hnd4,linewidth,4);set(hnd4,linewidt
8、h,4);p%设置图形线条颜色设置图形线条颜色pset(hnd4,color,yellow);set(hnd4,color,yellow);ptitle(title(硬限幅激活函数硬限幅激活函数););plegend(hardlim);legend(hardlim);pgrid ongrid on谢谢!谢谢!实验三实验三单层感知器的构建与使用单层感知器的构建与使用讲解讲解实验三单层感知器的构建与使用实验三单层感知器的构建与使用实验三单层感知器的构建与使用实验三单层感知器的构建与使用 p1 1、已经对逻辑与的单层感知器实现的权、已经对逻辑与的单层感知器实现的权值调整计算过程进行了讲解,请使用值调
9、整计算过程进行了讲解,请使用MATLABMATLAB语言编写程序,实现单层感知器对语言编写程序,实现单层感知器对逻辑与进行分类。逻辑与进行分类。演示程序演示程序1 1p%实验三第实验三第1 1题演示程序题演示程序p%设计并训练一个对与运算进行分类的单层感知器设计并训练一个对与运算进行分类的单层感知器p%神经网络并输出分类结果。神经网络并输出分类结果。p%给定训练样本数据给定训练样本数据pP=0 0 1 1;0 1 0 1;P=0 0 1 1;0 1 0 1;p%给定样本数据所对应的类别,用给定样本数据所对应的类别,用1 1和和0 0来表示两种类别来表示两种类别pT=0 0 0 1;T=0 0
10、0 1;p%创建一个有两个输入、样本数据的取值范围都在创建一个有两个输入、样本数据的取值范围都在00,11之间,之间,p%并且网络只有一个神经元的感知器神经网络并且网络只有一个神经元的感知器神经网络pnet=newp(0 1;0 1,1);net=newp(0 1;0 1,1);p%设置网络的最大训练次数为设置网络的最大训练次数为2020次,即训练次,即训练2020次后结束次后结束训练训练pnet.trainParam.epochs=20;net.trainParam.epochs=20;p%使用训练函数对创建的网络进行训练使用训练函数对创建的网络进行训练pnet=train(net,P,T)
11、;net=train(net,P,T);演示程序演示程序1 1p%对训练后的网络进行仿真,即根据训练后的网络和样本数据对训练后的网络进行仿真,即根据训练后的网络和样本数据p%给出输出给出输出pa=net.b1;a=net.b1;pb=net.iw1;b=net.iw1;pY=sim(net,P);Y=sim(net,P);p%计算网络的平均绝对误差,表示网络错误分类计算网络的平均绝对误差,表示网络错误分类pE1=mae(Y-T);E1=mae(Y-T);p%给定测试数据,检测训练好的神经网络的性能给定测试数据,检测训练好的神经网络的性能pQ=1 0 1 0;0 1 1 0;Q=1 0 1 0;
12、0 1 1 0;p%使用测试数据,对网络进行仿真,仿真输出即为分类的结果使用测试数据,对网络进行仿真,仿真输出即为分类的结果pY1=sim(net,Q);Y1=sim(net,Q);p%创建一个新的绘图窗口创建一个新的绘图窗口演示程序演示程序1 1pfigure;figure;p%设置绘图范围,在坐标图中绘制测试数据点,并根据设置绘图范围,在坐标图中绘制测试数据点,并根据数据数据p%所对应的类别用约定的符号画出所对应的类别用约定的符号画出 p v=-0.5 2-0.5 2;v=-0.5 2-0.5 2;pplotpv(Q,Y1,v);plotpv(Q,Y1,v);p%利用权值和阈值,在坐标图中
13、绘制分类线利用权值和阈值,在坐标图中绘制分类线p%plotpc(net.iw1,net.b1)%plotpc(net.iw1,net.b1)p%为更清楚的看到分类,可以给阈值加一个小的偏移量为更清楚的看到分类,可以给阈值加一个小的偏移量 p plotpc(net.iw1,net.b1+0.1)plotpc(net.iw1,net.b1+0.1)实验三单层感知器的构建与使用实验三单层感知器的构建与使用p2 2、现需要对一组数据进行分类、现需要对一组数据进行分类,设样本设样本数据的输入数据为数据的输入数据为P=-0.4-0.5 0.6-P=-0.4-0.5 0.6-0.1;0.9 0 0.1 0.
14、5,0.1;0.9 0 0.1 0.5,其期望值为其期望值为T=1 1 T=1 1 0 1,0 1,请构建一个单层感知器对数据进行请构建一个单层感知器对数据进行分类分类,并用测试数据并用测试数据Q=0.6 0.9-0.1 Q=0.6 0.9-0.1 0.7;-0.1-0.5 0.5-0.30.7;-0.1-0.5 0.5-0.3对构建好的神对构建好的神经网络进行测试经网络进行测试,并评价其性能并评价其性能.演示程序演示程序2 2p%实验三第实验三第2 2题演示程序题演示程序p%设计并训练一个对与运算进行分类的单层感知器神经网络设计并训练一个对与运算进行分类的单层感知器神经网络p%并输出分类结果
15、。并输出分类结果。p%p%给定训练样本数据给定训练样本数据pP=-0.4-0.5 0.6-0.1;0.9 0 0.1 0.5;P=-0.4-0.5 0.6-0.1;0.9 0 0.1 0.5;p%给定样本数据所对应的类别,用给定样本数据所对应的类别,用1 1和和0 0来表示两种类别来表示两种类别pT=1 1 0 1;T=1 1 0 1;p%创建一个有两个输入、样本数据的取值范围都在创建一个有两个输入、样本数据的取值范围都在00,11之间,之间,p%并且网络只有一个神经元的感知器神经网络并且网络只有一个神经元的感知器神经网络pnet=newp(0 1;0 1,1);net=newp(0 1;0
16、1,1);p%设置网络的最大训练次数为设置网络的最大训练次数为2020次,即训练次,即训练2020次后结束训练次后结束训练pnet.trainParam.epochs=20;net.trainParam.epochs=20;演示程序演示程序2 2p%使用训练函数对创建的网络进行训练使用训练函数对创建的网络进行训练pnet=train(net,P,T);net=train(net,P,T);p%对训练后的网络进行仿真,即根据训练后的网络和样对训练后的网络进行仿真,即根据训练后的网络和样本数据给出输出本数据给出输出pa=net.b1a=net.b1pb=net.iw1b=net.iw1pY=sim
17、(net,P);Y=sim(net,P);p%计算网络的平均绝对误差,表示网络错误分类计算网络的平均绝对误差,表示网络错误分类pE1=mae(Y-T)E1=mae(Y-T)p%给定测试数据,检测训练好的神经网络的性能给定测试数据,检测训练好的神经网络的性能pQ=0.6 0.9-0.1 0.7;-0.1-0.5 0.5-0.3;Q=0.6 0.9-0.1 0.7;-0.1-0.5 0.5-0.3;p%使用测试数据,对网络进行仿真,仿真输出即为分类使用测试数据,对网络进行仿真,仿真输出即为分类的结果的结果演示程序演示程序2 2pY1=sim(net,Q);Y1=sim(net,Q);p%创建一个新
18、的绘图窗口创建一个新的绘图窗口pfigure;figure;p%设置绘图范围,在坐标图中绘制测试数据点,并根据设置绘图范围,在坐标图中绘制测试数据点,并根据数据所对应的类别用约定的符号画出数据所对应的类别用约定的符号画出 p v=-1 2-1 2;v=-1 2-1 2;pplotpv(Q,Y1,v);plotpv(Q,Y1,v);p%利用权值和阈值,在坐标图中绘制分类线利用权值和阈值,在坐标图中绘制分类线p plotpc(net.iw1,net.b1)plotpc(net.iw1,net.b1)p%为更清楚的看到分类,可以给阈值加一个小的偏移量为更清楚的看到分类,可以给阈值加一个小的偏移量 p
19、%plotpc(net.iw1,net.b1+0.1)%plotpc(net.iw1,net.b1+0.1)实验三单层感知器的构建与使用实验三单层感知器的构建与使用p 3 3、有下面一组样本数据:输入数据为、有下面一组样本数据:输入数据为P=0 0 0 1;1 0 1 1,P=0 0 0 1;1 0 1 1,目标值为目标值为0 1 1 0 1 1 00,能否使用单层感知器对其进行正确分,能否使用单层感知器对其进行正确分类,请编写类,请编写MATLABMATLAB程序验证,并对结果进程序验证,并对结果进行分析?行分析?演示程序演示程序3 3p%实验三第实验三第3 3题演示程序题演示程序p%设计并
20、训练一个对与运算进行分类的单层感知器神经网络并输出设计并训练一个对与运算进行分类的单层感知器神经网络并输出分类结果。分类结果。p%p%给定训练样本数据给定训练样本数据pP=0 1 0 1;0 0 1 1;P=0 1 0 1;0 0 1 1;p%给定样本数据所对应的类别,用给定样本数据所对应的类别,用1 1和和0 0来表示两种类别来表示两种类别pT=0 1 1 0;T=0 1 1 0;p%创建一个有两个输入、样本数据的取值范围都在创建一个有两个输入、样本数据的取值范围都在00,11之间,之间,p%并且网络只有一个神经元的感知器神经网络并且网络只有一个神经元的感知器神经网络pnet=newp(0
21、1;0 1,1);net=newp(0 1;0 1,1);p%设置网络的最大训练次数为设置网络的最大训练次数为2020次,即训练次,即训练2020次后结束训练次后结束训练pnet.trainParam.epochs=20;net.trainParam.epochs=20;p%使用训练函数对创建的网络进行训练使用训练函数对创建的网络进行训练pnet=train(net,P,T);net=train(net,P,T);演示程序演示程序3 3p%对训练后的网络进行仿真,即根据训练后的网络和样对训练后的网络进行仿真,即根据训练后的网络和样本数据给出输出本数据给出输出pa=net.b1a=net.b1p
22、b=net.iw1b=net.iw1pY=sim(net,P);Y=sim(net,P);p%计算网络的平均绝对误差,表示网络错误分类计算网络的平均绝对误差,表示网络错误分类pE1=mae(Y-T)E1=mae(Y-T)p%给定测试数据,检测训练好的神经网络的性能给定测试数据,检测训练好的神经网络的性能pQ=0 1 0 1;0 0 1 1;Q=0 1 0 1;0 0 1 1;p%使用测试数据,对网络进行仿真,仿真输出即为分类使用测试数据,对网络进行仿真,仿真输出即为分类的结果的结果演示程序演示程序3 3pY1=0 1 1 0;Y1=0 1 1 0;p%创建一个新的绘图窗口创建一个新的绘图窗口p
23、figure;figure;p%设置绘图范围,在坐标图中绘制测试数据点,并根据设置绘图范围,在坐标图中绘制测试数据点,并根据数据所对应的类别用约定的符号画出数据所对应的类别用约定的符号画出 p v=-1 2-1 2;v=-1 2-1 2;pplotpv(Q,Y1,v);plotpv(Q,Y1,v);p%利用权值和阈值,在坐标图中绘制分类线利用权值和阈值,在坐标图中绘制分类线p%plotpc(net.iw1,net.b1)%plotpc(net.iw1,net.b1)p%为更清楚的看到分类,可以给阈值加一个小的偏移量为更清楚的看到分类,可以给阈值加一个小的偏移量 p plotpc(net.iw1
24、,net.b1+0.1)plotpc(net.iw1,net.b1+0.1)谢谢!谢谢!实验四实验四线性神经网络的构建与使用线性神经网络的构建与使用讲讲解解实验四实验四线性神经网络的构建与使用线性神经网络的构建与使用实验四实验四线性神经网络的构建与使用线性神经网络的构建与使用 p1 1、有、有2121组单输入矢量和相对应的目标矢组单输入矢量和相对应的目标矢量,试设计一个线性神经网络来拟合这对量,试设计一个线性神经网络来拟合这对数组的函数关系,并用测试数据进行测试。数组的函数关系,并用测试数据进行测试。实验四实验四线性神经网络的构建与使用线性神经网络的构建与使用p输入与目标数据如下:输入与目标数
25、据如下:输入数据:输入数据:P=-1:0.1:1P=-1:0.1:1 期望目标数据:期望目标数据:T=-0.96 0.577-0.0729 T=-0.96 0.577-0.0729 0.377 0.641 0.66 0.461 0.1336 0.201-0.377 0.641 0.66 0.461 0.1336 0.201-0.434-0.5-0.393-0.1647 0.0988 0.3072 0.434-0.5-0.393-0.1647 0.0988 0.3072 0.396 0.3449 0.1816-0.0312-0.2183-0.396 0.3449 0.1816-0.0312-0.
26、2183-0.32010.3201 测试数据为:测试数据为:P2=-1:0.025:1P2=-1:0.025:1 演示程序演示程序 1 1pP=-1:0.1:1;P=-1:0.1:1;p%T=-0.96 0.577-0.0729 0.377 0.641 0.66 0.461 0.1336%T=-0.96 0.577-0.0729 0.377 0.641 0.66 0.461 0.1336 0.201-0.434-0.5-0.393-0.1647 0.0988 0.3072 0.396 0.3449 0.201-0.434-0.5-0.393-0.1647 0.0988 0.3072 0.396
27、 0.3449 0.1816-0.0312-0.2183-0.3201;0.1816-0.0312-0.2183-0.3201;p%创建一个只有一个输出,输入延时为创建一个只有一个输出,输入延时为0 0,学习速率为,学习速率为0.010.01的的p%线性神经网络,线性神经网络,minmax(P)minmax(P)表示样表示样p%本数据的取值范围本数据的取值范围p%net=newlin(minmax(P),1,0,0.01);%net=newlin(minmax(P),1,0,0.01);p%对创建的线性神经网络进行初始化,设置权值和阈值的初始值对创建的线性神经网络进行初始化,设置权值和阈值的初
28、始值p%net=init(net);%net=init(net);p%net.trainParam.epochs=500;%net.trainParam.epochs=500;p%设置网络训练后的目标误差为设置网络训练后的目标误差为0.00010.0001p%net.trainParam.goal=0.0001;%net.trainParam.goal=0.0001;p%net=train(net,P,T);%net=train(net,P,T);演示程序演示程序 1 1p%有有-标记间的部分为拟合函数时的程序,有标记间的部分为拟合函数时的程序,有+标记间的部分为测试时的程序标记间的部分为测试
29、时的程序p%-%-p%y=sim(net,P);%y=sim(net,P);p%求解网络的均方误差值求解网络的均方误差值p%E=mse(y-T);%E=mse(y-T);p%获取绘图句柄获取绘图句柄p%hndl1=plot(P,y);%hndl1=plot(P,y);p%设置线宽为设置线宽为2 2p%set(hndl1,linewidth,2);%set(hndl1,linewidth,2);p%设置线的颜色为红色设置线的颜色为红色p%set(hndl1,color,red);%set(hndl1,color,red);p%hold on%hold onp%hndl2=plot(P,T);%h
30、ndl2=plot(P,T);演示程序演示程序 1 1p%set(hndl2,linewidth,2);%set(hndl2,linewidth,2);p%设置图形标题设置图形标题p%title(%title(线性神经网络逼近非线性函数的线性神经网络逼近非线性函数的MATLABMATLAB实现实现););p%设置图例设置图例p%legend(%legend(线性神经网络逼近非线性函数线性神经网络逼近非线性函数,原线性数据原线性数据)p%-%-p%从此处到标记为从此处到标记为+的部分为测试时的程序的部分为测试时的程序,测试用此部测试用此部分程序替换分程序替换-间的程序间的程序p%测试数据测试数据
31、p%P2=-1:0.025:1;%P2=-1:0.025:1;p%ytest=sim(net,P2);%ytest=sim(net,P2);p%plot(ytest,d,MarkerFaceColor,r,MarkerSize,8);%plot(ytest,d,MarkerFaceColor,r,MarkerSize,8);p%hold on%hold onp%plot(T,s,MarkerEdgeColor,k,MarkerFaceColor,g,Marplot(T,s,MarkerEdgeColor,k,MarkerFaceColor,g,MarkerSize,12);kerSize,12
32、);p%+%+实验四实验四线性神经网络的构建与使用线性神经网络的构建与使用p思考题思考题 1 1、一线性神经网络的输入为、一线性神经网络的输入为P=1.1-P=1.1-1.31.3,目标为,目标为T=0.6 1;T=0.6 1;设权值和偏置的设权值和偏置的初始值为初始值为0 0,学习速率为,学习速率为0.010.01,请计算出,请计算出此网络前二次的权值和偏置的值?此网络前二次的权值和偏置的值?实验四实验四线性神经网络的构建与使用线性神经网络的构建与使用 p权值调整公式(见权值调整公式(见神经网络实用教程神经网络实用教程p27p27)实验四实验四线性神经网络的构建与使用线性神经网络的构建与使用
33、p第一次调整第一次调整实际输出:实验四实验四线性神经网络的构建与使用线性神经网络的构建与使用p第一次调整第一次调整实际输出:实验四实验四线性神经网络的构建与使用线性神经网络的构建与使用p思考题思考题2 2、用、用MATLABMATLAB编程实现第编程实现第1 1题,要求输出每题,要求输出每一次迭代后的权值和偏置。一次迭代后的权值和偏置。演示程序演示程序2 2p%线性神经网络拟合曲线输出权值演示程序线性神经网络拟合曲线输出权值演示程序p%输入样本数输入样本数pNPATS=2;NPATS=2;p%输入样本值矩阵输入样本值矩阵pPatterns=1.1-1.3;Patterns=1.1-1.3;p%
34、输出目标值输出目标值pTarget=0.6 1;Target=0.6 1;p%学习率学习率pLearnRate=0.01;LearnRate=0.01;演示程序演示程序2 2p%将偏置看作输入的第一个分量,组成网络输将偏置看作输入的第一个分量,组成网络输入值入值pInputs=ones(1,2);Patterns;Inputs=ones(1,2);Patterns;p%权值初始化权值初始化pWeights=0 0;Weights=0 0;p%循环计算权值和偏置的改变值循环计算权值和偏置的改变值pfor i=1:3for i=1:3p%计算神经元的输出计算神经元的输出 pResult=(Weig
35、hts*Inputs);Result=(Weights*Inputs);演示程序演示程序2 2p%判断实际输出与目标值是否相等,相等则结判断实际输出与目标值是否相等,相等则结束迭代,否则进入下一轮迭代束迭代,否则进入下一轮迭代pif Result=Target,break,endif Result=Target,break,endp%按按LMSLMS误差学习算法调整权值误差学习算法调整权值pWeights=Weights+2*LearnRate*(Target-Weights=Weights+2*LearnRate*(Target-Result)*Inputs;Result)*Inputs;p
36、%在显示器上输出权值编号其对应值在显示器上输出权值编号其对应值pfprintf(%2d.Weights=,i);fprintf(%2d.Weights=,i);pdisp(Weights);disp(Weights);pendend谢谢!谢谢!实验五实验五BPBP神经网络的构建与使神经网络的构建与使用(一)用(一)讲解讲解实验五实验五BPBP神经网络的构建与使用神经网络的构建与使用实验五实验五BPBP神经网络的构建与使用神经网络的构建与使用 p1 1、有、有2121组单输入矢量和相对应的目标矢组单输入矢量和相对应的目标矢量,试设计一个线性神经网络来拟合这对量,试设计一个线性神经网络来拟合这对数
37、组的函数关系,并用测试数据进行测试。数组的函数关系,并用测试数据进行测试。实验五实验五BPBP神经网络的构建与使用神经网络的构建与使用p存在的问题存在的问题1 1、激活函数的选择、激活函数的选择 tansig的定义域为负无穷到正无穷,值域为-1到1,logsig的定义域为负无穷到正无穷,值域为0到12 2、结果如何显示?、结果如何显示?实验五实验五BPBP神经网络的构建与使用神经网络的构建与使用p输入与目标数据如下:输入与目标数据如下:输入数据:输入数据:P=-1:0.1:1P=-1:0.1:1 期望目标数据:期望目标数据:T=-0.96 0.577-0.0729 T=-0.96 0.577-
38、0.0729 0.377 0.641 0.66 0.461 0.1336 0.201-0.377 0.641 0.66 0.461 0.1336 0.201-0.434-0.5-0.393-0.1647 0.0988 0.3072 0.434-0.5-0.393-0.1647 0.0988 0.3072 0.396 0.3449 0.1816-0.0312-0.2183-0.396 0.3449 0.1816-0.0312-0.2183-0.32010.3201 测试数据为:测试数据为:P2=-1:0.025:1P2=-1:0.025:1 BPBP演示程序演示程序p%本函数演示本函数演示BPB
39、P网络对非线性数据的逼近效果网络对非线性数据的逼近效果p%下面为用下面为用BPBP神经网络逼近非线性数据的演示程序神经网络逼近非线性数据的演示程序p%输入样本输入样本pP=-1:0.1:1;P=-1:0.1:1;pT=-0.96 0.577 -0.0729 0.377 0.641 0.66 0.461 0.1336 0.201-T=-0.96 0.577 -0.0729 0.377 0.641 0.66 0.461 0.1336 0.201-0.434-0.5-0.393-0.1647 0.0988 0.3072 0.396 0.3449 0.1816-0.434-0.5-0.393-0.16
40、47 0.0988 0.3072 0.396 0.3449 0.1816-0.0312-0.2183-0.3201;0.0312-0.2183-0.3201;p%创建一个创建一个BPBP神经网络,每一个输入向量的取值范围为神经网络,每一个输入向量的取值范围为-1,1-1,1,隐含层有,隐含层有5 5个神经元,输出层个神经元,输出层p%有一个神经元,隐含层的激活函数为有一个神经元,隐含层的激活函数为tansigtansig,输出层的激活函数为,输出层的激活函数为logsiglogsig,训练函数为梯度下,训练函数为梯度下p%降函数,即降函数,即2.3.22.3.2节中所描述的标准学习算法节中所描
41、述的标准学习算法pnet=newff(-1 1,5,1,tansig,tansig,traingd);net=newff(-1 1,5,1,tansig,tansig,traingd);p%可以改变训练步数为可以改变训练步数为30003000、50005000、1000010000来查看网络的训练结果来查看网络的训练结果pnet.trainParam.epochs=5000;net.trainParam.epochs=5000;p%目标误差设为目标误差设为0.010.01pnet.trainParam.goal=0.01;net.trainParam.goal=0.01;BPBP演示程序演示程
42、序p%设置学习速率为设置学习速率为0.10.1pLP.lr=0.1;LP.lr=0.1;pnet=train(net,P,T);net=train(net,P,T);p%有有-标记间的部分为拟合函数时的程序,有标记间的部分为拟合函数时的程序,有+标标记间的部分为测试时的程序记间的部分为测试时的程序p%-%-py=sim(net,P);y=sim(net,P);pfigurefigurephndl1=plot(P,y);hndl1=plot(P,y);p%设置线宽为设置线宽为2 2pset(hndl1,linewidth,2);set(hndl1,linewidth,2);p%设置线的颜色为红色
43、设置线的颜色为红色pset(hndl1,color,red);set(hndl1,color,red);phold onhold onphndl2=plot(P,T);hndl2=plot(P,T);BPBP演示程序演示程序pset(hndl2,linewidth,2);set(hndl2,linewidth,2);p%设置图形标题设置图形标题ptitle(BPtitle(BP神经网络逼近非线性函数的神经网络逼近非线性函数的MATLABMATLAB实现实现););p%设置图例设置图例plegend(BPlegend(BP神经网络逼近非线性函数神经网络逼近非线性函数,原数据原数据)p%-%-p%
44、从此处到标记为从此处到标记为+的部分为测试时的程序的部分为测试时的程序,测试用此部分程序替换测试用此部分程序替换-间的程序间的程序p%测试数据测试数据p%测试测试p%P2=-1:0.05:1;%P2=-1:0.05:1;p%ytest=sim(net,P2);%ytest=sim(net,P2);p%figure%figurep%hndl1=plot(P2,ytest);%hndl1=plot(P2,ytest);BPBP演示程序演示程序p%设置线宽为设置线宽为2 2p%set(hndl1,linewidth,2);%set(hndl1,linewidth,2);p%设置线的颜色为红色设置线的
45、颜色为红色p%set(hndl1,color,red);%set(hndl1,color,red);p%hold on%hold onp%hndl2=plot(P,T);%hndl2=plot(P,T);p%set(hndl2,linewidth,2);%set(hndl2,linewidth,2);p%设置图形标题设置图形标题p%title(BP%title(BP神经网络逼近非线性函数的神经网络逼近非线性函数的MATLABMATLAB实现实现););p%设置图例设置图例p%legend(BP%legend(BP神经网络逼近非线性函数神经网络逼近非线性函数,原数据原数据)p%+%+线性网络演示
46、程序线性网络演示程序 p%本函数演示线性神经网络对非线性数据的逼近效果本函数演示线性神经网络对非线性数据的逼近效果p%下面为用线性神经网络逼近非线性数据的演示程序下面为用线性神经网络逼近非线性数据的演示程序pP=-1:0.1:1;P=-1:0.1:1;pT=-0.96 0.577-0.0729 0.377 0.641 0.66 0.461 0.1336 T=-0.96 0.577-0.0729 0.377 0.641 0.66 0.461 0.1336 0.201-0.434-0.5-0.393-0.1647 0.0988 0.3072 0.396 0.201-0.434-0.5-0.393-
47、0.1647 0.0988 0.3072 0.396 0.3449 0.1816-0.0312-0.2183-0.3201;0.3449 0.1816-0.0312-0.2183-0.3201;p%创建一个只有一个输出,输入延时为创建一个只有一个输出,输入延时为0 0,学习速率为,学习速率为0.010.01的的p%线性神经网络,线性神经网络,minmax(P)minmax(P)表示样本数据的取值范围表示样本数据的取值范围pnet=newlin(minmax(P),1,0,0.01);net=newlin(minmax(P),1,0,0.01);p%对创建的线性神经网络进行初始化,设置权值和阈值
48、的初始值对创建的线性神经网络进行初始化,设置权值和阈值的初始值pnet=init(net);net=init(net);pnet.trainParam.epochs=500;net.trainParam.epochs=500;p%设置网络训练后的目标误差为设置网络训练后的目标误差为0.00010.0001pnet.trainParam.goal=0.0001;net.trainParam.goal=0.0001;线性网络演示程序线性网络演示程序pnet=train(net,P,T);net=train(net,P,T);p%有有-标记间的部分为拟合数据时的程序,有标记间的部分为拟合数据时的程序
49、,有+标记间的部分为测试时的程序标记间的部分为测试时的程序p%-%-py=sim(net,P);y=sim(net,P);p%求解网络的均方误差值求解网络的均方误差值pE=mse(y-T);E=mse(y-T);pfigurefigurep%获取绘图句柄获取绘图句柄phndl1=plot(P,y);hndl1=plot(P,y);p%设置线宽为设置线宽为2 2pset(hndl1,linewidth,2);set(hndl1,linewidth,2);p%设置线的颜色为红色设置线的颜色为红色pset(hndl1,color,red);set(hndl1,color,red);线性网络演示程序线
50、性网络演示程序phold onhold onphndl2=plot(P,T);hndl2=plot(P,T);pset(hndl2,linewidth,2);set(hndl2,linewidth,2);p%设置图形标题设置图形标题ptitle(title(线性神经网络逼近非线性函数的线性神经网络逼近非线性函数的MATLABMATLAB实现实现););p%设置图例设置图例plegend(legend(线性神经网络逼近非线性函数线性神经网络逼近非线性函数,原线性数据原线性数据)p%-%-p%从此处到标记为从此处到标记为+的部分为测试时的程序的部分为测试时的程序,测试用此部测试用此部分程序替换分程