《《神经网络实用教程》配套实验教程讲解与源码.ppt》由会员分享,可在线阅读,更多相关《《神经网络实用教程》配套实验教程讲解与源码.ppt(104页珍藏版)》请在三一办公上搜索。
1、实验二Matlab快速入门讲解,实验二MATLAB快速入门,实验二MATLAB快速入门,3、使用MATLAB中的条件语句和循环语句,编程实现下面的功能:从1累加到20,即:1+2+3+4+20,当累加和超过30时,跳出FOR循环,在命令窗口中输出此时的累加次数和累加值。,演示程序,sum=0;for i=1:20 sum=sum+i;if sum30%break;disp(sum is 30)fprintf(%2d,sum)x=1 continue;endendisum,实验二MATLAB快速入门,4、神经网络常用的激活函数有S型、对数S型、线性型和硬限幅等,在MATLAB中有tansig()
2、、logsig()、purelin()和hardlim()四个函数对应,请使用MATLAB编程,按下画所示图形,画出四个激活函数的图形。,演示程序,x=-10:0.2:10;y1=tansig(x);y2=logsig(x);y3=purelin(x);y4=hardlim(x);h=figure(name,这是一个显示多个激活函数图形的程序);subplot(2,2,1);%绘制第一个图形hnd1=plot(x,y1);%设置图形线条宽度set(hnd1,linewidth,1);%设置图形线条颜色set(hnd1,color,red);title(S型激活函数);legend(tansig
3、);grid on,%设置第二个图形的绘图位置为第一行第二列 subplot(2,2,2);hnd2=plot(x,y2);%设置图形线条宽度set(hnd2,linewidth,2);%设置图形线条颜色set(hnd2,color,green);title(对数S型激活函数);legend(logsig);grid on%设置第三个图形的绘图位置为第二行第一列 subplot(2,2,3);hnd3=plot(x,y3);,%设置图形线条宽度set(hnd3,linewidth,3);%设置图形线条颜色set(hnd3,color,blue);title(线性激活函数);legend(pur
4、elin);grid on%设置第四个图形的绘图位置为第二行第二列 subplot(2,2,4);hnd4=plot(x,y4);%设置图形线条宽度set(hnd4,linewidth,4);%设置图形线条颜色set(hnd4,color,yellow);title(硬限幅激活函数);legend(hardlim);grid on,谢谢!,实验三单层感知器的构建与使用讲解,实验三单层感知器的构建与使用,实验三单层感知器的构建与使用,1、已经对逻辑与的单层感知器实现的权值调整计算过程进行了讲解,请使用MATLAB语言编写程序,实现单层感知器对逻辑与进行分类。,演示程序1,%实验三第1题演示程序%
5、设计并训练一个对与运算进行分类的单层感知器%神经网络并输出分类结果。%给定训练样本数据P=0 0 1 1;0 1 0 1;%给定样本数据所对应的类别,用1和0来表示两种类别T=0 0 0 1;%创建一个有两个输入、样本数据的取值范围都在0,1之间,%并且网络只有一个神经元的感知器神经网络net=newp(0 1;0 1,1);%设置网络的最大训练次数为20次,即训练20次后结束训练=20;%使用训练函数对创建的网络进行训练net=train(net,P,T);,演示程序1,%对训练后的网络进行仿真,即根据训练后的网络和样本数据%给出输出a=net.b1;b=net.iw1;Y=sim(net,
6、P);%计算网络的平均绝对误差,表示网络错误分类E1=mae(Y-T);%给定测试数据,检测训练好的神经网络的性能Q=1 0 1 0;0 1 1 0;%使用测试数据,对网络进行仿真,仿真输出即为分类的结果Y1=sim(net,Q);%创建一个新的绘图窗口,演示程序1,figure;%设置绘图范围,在坐标图中绘制测试数据点,并根据数据%所对应的类别用约定的符号画出 v=-0.5 2-0.5 2;plotpv(Q,Y1,v);%利用权值和阈值,在坐标图中绘制分类线%plotpc(net.iw1,net.b1)%为更清楚的看到分类,可以给阈值加一个小的偏移量 plotpc(net.iw1,net.b
7、1+0.1),实验三单层感知器的构建与使用,2、现需要对一组数据进行分类,设样本数据的输入数据为P=-0.4-0.5 0.6-0.1;0.9 0 0.1 0.5,其期望值为T=1 1 0 1,请构建一个单层感知器对数据进行分类,并用测试数据Q=0.6 0.9-0.1 0.7;-0.1-0.5 0.5-0.3对构建好的神经网络进行测试,并评价其性能.,演示程序2,%实验三第2题演示程序%设计并训练一个对与运算进行分类的单层感知器神经网络%并输出分类结果。%给定训练样本数据P=-0.4-0.5 0.6-0.1;0.9 0 0.1 0.5;%给定样本数据所对应的类别,用1和0来表示两种类别T=1 1
8、 0 1;%创建一个有两个输入、样本数据的取值范围都在0,1之间,%并且网络只有一个神经元的感知器神经网络net=newp(0 1;0 1,1);%设置网络的最大训练次数为20次,即训练20次后结束训练=20;,演示程序2,%使用训练函数对创建的网络进行训练net=train(net,P,T);%对训练后的网络进行仿真,即根据训练后的网络和样本数据给出输出a=net.b1b=net.iw1Y=sim(net,P);%计算网络的平均绝对误差,表示网络错误分类E1=mae(Y-T)%给定测试数据,检测训练好的神经网络的性能Q=0.6 0.9-0.1 0.7;-0.1-0.5 0.5-0.3;%使用
9、测试数据,对网络进行仿真,仿真输出即为分类的结果,演示程序2,Y1=sim(net,Q);%创建一个新的绘图窗口figure;%设置绘图范围,在坐标图中绘制测试数据点,并根据数据所对应的类别用约定的符号画出 v=-1 2-1 2;plotpv(Q,Y1,v);%利用权值和阈值,在坐标图中绘制分类线 plotpc(net.iw1,net.b1)%为更清楚的看到分类,可以给阈值加一个小的偏移量%plotpc(net.iw1,net.b1+0.1),实验三单层感知器的构建与使用,3、有下面一组样本数据:输入数据为P=0 0 0 1;1 0 1 1,目标值为0 1 1 0,能否使用单层感知器对其进行正
10、确分类,请编写MATLAB程序验证,并对结果进行分析?,演示程序3,%实验三第3题演示程序%设计并训练一个对与运算进行分类的单层感知器神经网络并输出分类结果。%给定训练样本数据P=0 1 0 1;0 0 1 1;%给定样本数据所对应的类别,用1和0来表示两种类别T=0 1 1 0;%创建一个有两个输入、样本数据的取值范围都在0,1之间,%并且网络只有一个神经元的感知器神经网络net=newp(0 1;0 1,1);%设置网络的最大训练次数为20次,即训练20次后结束训练=20;%使用训练函数对创建的网络进行训练net=train(net,P,T);,演示程序3,%对训练后的网络进行仿真,即根据
11、训练后的网络和样本数据给出输出a=net.b1b=net.iw1Y=sim(net,P);%计算网络的平均绝对误差,表示网络错误分类E1=mae(Y-T)%给定测试数据,检测训练好的神经网络的性能Q=0 1 0 1;0 0 1 1;%使用测试数据,对网络进行仿真,仿真输出即为分类的结果,演示程序3,Y1=0 1 1 0;%创建一个新的绘图窗口figure;%设置绘图范围,在坐标图中绘制测试数据点,并根据数据所对应的类别用约定的符号画出 v=-1 2-1 2;plotpv(Q,Y1,v);%利用权值和阈值,在坐标图中绘制分类线%plotpc(net.iw1,net.b1)%为更清楚的看到分类,可
12、以给阈值加一个小的偏移量 plotpc(net.iw1,net.b1+0.1),谢谢!,实验四线性神经网络的构建与使用讲解,实验四线性神经网络的构建与使用,实验四线性神经网络的构建与使用,1、有21组单输入矢量和相对应的目标矢量,试设计一个线性神经网络来拟合这对数组的函数关系,并用测试数据进行测试。,实验四线性神经网络的构建与使用,输入与目标数据如下:输入数据:P=-1:0.1:1 期望目标数据: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
13、0.3449 0.1816-0.0312-0.2183-0.3201 测试数据为:P2=-1:0.025:1,演示程序 1,P=-1:0.1:1;%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.0312-0.2183-0.3201;%创建一个只有一个输出,输入延时为0,学习速率为0.01的%线性神经网络,minmax(P)表示样%本数据的取值范围%net=newlin(minmax(P),1,0,0.01);%
14、对创建的线性神经网络进行初始化,设置权值和阈值的初始值%net=init(net);%=500;%设置网络训练后的目标误差为0.0001%=0.0001;%net=train(net,P,T);,演示程序 1,%有-标记间的部分为拟合函数时的程序,有+标记间的部分为测试时的程序%-%y=sim(net,P);%求解网络的均方误差值%E=mse(y-T);%获取绘图句柄%hndl1=plot(P,y);%设置线宽为2%set(hndl1,linewidth,2);%设置线的颜色为红色%set(hndl1,color,red);%hold on%hndl2=plot(P,T);,演示程序 1,%s
15、et(hndl2,linewidth,2);%设置图形标题%title(线性神经网络逼近非线性函数的MATLAB实现);%设置图例%legend(线性神经网络逼近非线性函数,原线性数据)%-%从此处到标记为+的部分为测试时的程序,测试用此部分程序替换-间的程序%测试数据%P2=-1:0.025:1;%ytest=sim(net,P2);%plot(ytest,d,MarkerFaceColor,r,MarkerSize,8);%hold on%plot(T,s,MarkerEdgeColor,k,MarkerFaceColor,g,MarkerSize,12);%+,实验四线性神经网络的构建与
16、使用,思考题 1、一线性神经网络的输入为P=1.1-1.3,目标为T=0.6 1;设权值和偏置的初始值为0,学习速率为0.01,请计算出此网络前二次的权值和偏置的值?,实验四线性神经网络的构建与使用,权值调整公式(见神经网络实用教程p27),实验四线性神经网络的构建与使用,第一次调整实际输出:,实验四线性神经网络的构建与使用,第一次调整实际输出:,实验四线性神经网络的构建与使用,思考题2、用MATLAB编程实现第1题,要求输出每一次迭代后的权值和偏置。,演示程序2,%线性神经网络拟合曲线输出权值演示程序%输入样本数NPATS=2;%输入样本值矩阵Patterns=1.1-1.3;%输出目标值T
17、arget=0.6 1;%学习率LearnRate=0.01;,演示程序2,%将偏置看作输入的第一个分量,组成网络输入值Inputs=ones(1,2);Patterns;%权值初始化Weights=0 0;%循环计算权值和偏置的改变值for i=1:3%计算神经元的输出 Result=(Weights*Inputs);,演示程序2,%判断实际输出与目标值是否相等,相等则结束迭代,否则进入下一轮迭代if Result=Target,break,end%按LMS误差学习算法调整权值Weights=Weights+2*LearnRate*(Target-Result)*Inputs;%在显示器上输
18、出权值编号其对应值fprintf(%2d.Weights=,i);disp(Weights);end,谢谢!,实验五BP神经网络的构建与使用(一)讲解,实验五BP神经网络的构建与使用,实验五BP神经网络的构建与使用,1、有21组单输入矢量和相对应的目标矢量,试设计一个线性神经网络来拟合这对数组的函数关系,并用测试数据进行测试。,实验五BP神经网络的构建与使用,存在的问题1、激活函数的选择 tansig的定义域为负无穷到正无穷,值域为-1到1,logsig的定义域为负无穷到正无穷,值域为0到12、结果如何显示?,实验五BP神经网络的构建与使用,输入与目标数据如下:输入数据:P=-1:0.1:1
19、期望目标数据: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.0312-0.2183-0.3201 测试数据为:P2=-1:0.025:1,BP演示程序,%本函数演示BP网络对非线性数据的逼近效果%下面为用BP神经网络逼近非线性数据的演示程序%输入样本P=-1:0.1:1;T=-0.96 0.577-0.0729 0.377 0.641 0.66 0.461 0.1336 0.201-0.434-0.5-0.39
20、3-0.1647 0.0988 0.3072 0.396 0.3449 0.1816-0.0312-0.2183-0.3201;%创建一个BP神经网络,每一个输入向量的取值范围为-1,1,隐含层有5个神经元,输出层%有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为logsig,训练函数为梯度下%降函数,即节中所描述的标准学习算法net=newff(-1 1,5,1,tansig,tansig,traingd);%可以改变训练步数为3000、5000、10000来查看网络的训练结果=5000;%目标误差设为0.01=0.01;,BP演示程序,%设置学习速率为0.1LP.lr=0.
21、1;net=train(net,P,T);%有-标记间的部分为拟合函数时的程序,有+标记间的部分为测试时的程序%-y=sim(net,P);figurehndl1=plot(P,y);%设置线宽为2set(hndl1,linewidth,2);%设置线的颜色为红色set(hndl1,color,red);hold onhndl2=plot(P,T);,BP演示程序,set(hndl2,linewidth,2);%设置图形标题title(BP神经网络逼近非线性函数的MATLAB实现);%设置图例legend(BP神经网络逼近非线性函数,原数据)%-%从此处到标记为+的部分为测试时的程序,测试用此
22、部分程序替换-间的程序%测试数据%测试%P2=-1:0.05:1;%ytest=sim(net,P2);%figure%hndl1=plot(P2,ytest);,BP演示程序,%设置线宽为2%set(hndl1,linewidth,2);%设置线的颜色为红色%set(hndl1,color,red);%hold on%hndl2=plot(P,T);%set(hndl2,linewidth,2);%设置图形标题%title(BP神经网络逼近非线性函数的MATLAB实现);%设置图例%legend(BP神经网络逼近非线性函数,原数据)%+,线性网络演示程序,%本函数演示线性神经网络对非线性数据
23、的逼近效果%下面为用线性神经网络逼近非线性数据的演示程序P=-1:0.1:1;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.0312-0.2183-0.3201;%创建一个只有一个输出,输入延时为0,学习速率为0.01的%线性神经网络,minmax(P)表示样本数据的取值范围net=newlin(minmax(P),1,0,0.01);%对创建的线性神经网络进行初始化,设置权值和阈值的初始值net=init(n
24、et);=500;%设置网络训练后的目标误差为0.0001=0.0001;,线性网络演示程序,net=train(net,P,T);%有-标记间的部分为拟合数据时的程序,有+标记间的部分为测试时的程序%-y=sim(net,P);%求解网络的均方误差值E=mse(y-T);figure%获取绘图句柄hndl1=plot(P,y);%设置线宽为2set(hndl1,linewidth,2);%设置线的颜色为红色set(hndl1,color,red);,线性网络演示程序,hold onhndl2=plot(P,T);set(hndl2,linewidth,2);%设置图形标题title(线性神经
25、网络逼近非线性函数的MATLAB实现);%设置图例legend(线性神经网络逼近非线性函数,原线性数据)%-%从此处到标记为+的部分为测试时的程序,测试用此部分程序替换-间的程序%测试数据%P2=-1:0.025:1;%ytest=sim(net,P2);%figure,线性网络演示程序,%获取绘图句柄%hndl1=plot(P2,ytest);%设置线宽为2%set(hndl1,linewidth,2);%设置线的颜色为红色%set(hndl1,color,red);%hold on%hndl2=plot(P,T);%set(hndl2,linewidth,2);%设置图形标题%title(
26、线性神经网络逼近非线性函数的MATLAB实现);%设置图例%legend(线性神经网络逼近非线性函数,原线性数据)%+,谢谢!,实验六 BP神经网络的构建与使用(二)讲解,实验六BP神经网络的构建与使用(二),实验六BP神经网络的构建与使用(二),使用BP神经网络对正弦函数进行逼近,实验六BP神经网络的构建与使用(二),存在的问题1、激活函数的选择2、训练次数的确定3、隐含层神经元个数的确定,实验六BP神经网络的构建与使用(二),实验内容1数据:输入样本数据:P=-2:0.1:2;期望目标数据:T=sin(2*P);测试数据:P=-2:0.05:2;,实验六BP神经网络的构建与使用(二),实验
27、内容2:探测网络合适的训练次数最大训练次数设置为3000、5000、10000 观测效果,实验六BP神经网络的构建与使用(二),实验内容3:探测合适的隐含层的神经元个数设置隐含层神经网络的个数为2个、8个、10个、20个,比较效果,实验六BP神经网络的构建与使用(二),实验内容4:输入的正弦函数改为sin(3*P)、sin(4*P)、sin(8*P)时 观测逼近效果,实验六BP神经网络的构建与使用(二),思考题1、实验中构建的BP神经网络的合适的训练次数在什么范围内?2、实验中构建的BP神经网络的合适的隐含层神经元的个数在什么范围内?,演示程序,%本函数演示BP网络对非线性数据的逼近效果%下面
28、为用BP神经网络逼近非线性数据的演示程序clcclearclose all%输入样本P=-2:0.1:2;T=sin(4*P);%创建一个BP神经网络,每一个输入向量的取值范围为-1,1,隐含层有5个神经元,%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为logsig,%训练函数为梯度下降函数,即节中所描述的标准学习算法。%可改变隐含层神经元个数为2、8、10、20测试网络性能net=newff(-1 1,5,1,tansig,tansig,traingd);%可以改变训练步数为3000、5000、10000来查看网络的训练结果=2000;,演示程序,%目标误差设为0.
29、01=0.01;%设置学习速率为0.1LP.lr=0.1;net=train(net,P,T);%有-标记间的部分为拟合函数时的程序,有+标记间的部分为测试时的程序%-y=sim(net,P);subplot(2,1,1)hndl1=plot(P,y);%设置线宽为2set(hndl1,linewidth,2);%设置线的颜色为红色set(hndl1,color,red);hold on,演示程序,hndl2=plot(P,T);set(hndl2,linewidth,2);%设置图形标题title(使用训练数据测试BP神经网络逼近非线性函数);%设置图例%legend(BP神经网络逼近非线性
30、函数,原数据)%-%从此处到标记为+的部分为测试时的程序,测试用此部分程序替换-间的程序%测试数据%测试P2=-2:0.05:2;ytest=sim(net,P2);subplot(2,1,2),演示程序,hndl1=plot(P2,ytest);%设置线宽为2set(hndl1,linewidth,2);%设置线的颜色为红色set(hndl1,color,red);hold onhndl2=plot(P,T);set(hndl2,linewidth,2);%设置图形标题title(使用测试数据测试BP神经网络逼近非线性函数);%设置图例%legend(BP神经网络逼近非线性函数,原数据)%+
31、,谢谢!,实验七 RBF神经网络的构建与使用讲解,实验七RBF神经网络的构建与使用,实验七RBF神经网络的构建与使用,使用RBF神经网络对指定函数进行逼近,实验七RBF神经网络的构建与使用,存在的问题1、点乘的使用2、仿真输出与实际函数的显示3、扩展参数的确定 4、基神经元个数的确定,实验七RBF神经网络的构建与使用,实验内容1对下述函数的逼近,演示程序,%建立一个径向基神经网络,对非线性函数进行逼近,并作出网络的逼近误差曲线。%clcclearclose all%输入从0开始变化到4,每次变化幅度为0.1p=0:0.2:4;t=exp(-p).*sin(p);%建立一个目标误差为0,径向基函
32、数的分布密度为0.5,隐含层神经元个数的最大值为21,每%增加5个神经元显示一次结果net=newrb(p,t,0,0.5,50,5);ysim=sim(net,p);,演示程序,subplot(2,1,1)hndl1=plot(p,ysim);%设置线宽为2set(hndl1,linewidth,2);%设置线的颜色为红色set(hndl1,color,red);hold on%因原函数与逼近函数重合,要看到两个图像y应该加一个小的偏移%hndl2=plot(p,t+0.01);hndl2=plot(p,t);set(hndl2,linewidth,2);,演示程序,%设置图形标题title
33、(使用训练数据测试RBF神经网络逼近非线性函数);%下面为使用测试数据对训练好的神经网络效果进行测试xtest=0:0.01:4;%ttest=exp(-xtest).*sin(xtest);ytestsim=sim(net,xtest);subplot(2,1,2)hndl1=plot(xtest,ytestsim);,演示程序,%设置线宽为2set(hndl1,linewidth,2);%设置线的颜色为红色set(hndl1,color,red);hold on%hndl2=plot(p,t+0.01);hndl2=plot(p,t);set(hndl2,linewidth,2);%设置图
34、形标题title(使用测试数据测试RBF神经网络逼近非线性函数);,实验七RBF神经网络的构建与使用,实验内容2:观测改变扩展参数的影响扩展参数(分布密度)设置为x0.1、0.5、0.8 观测效果,实验七RBF神经网络的构建与使用,实验内容3:观测隐含层神经元最大个数改变的影响隐含层神经元的个数的最大值:1个、5个、10个、30个,实验七RBF神经网络的构建与使用,补充:与BP神经网络的比较,演示程序,%本函数演示BP网络和RBF网络对函数的逼近效果%下面为用BP神经网络逼近函数%输入样本P=0:0.2:4;T=exp(-P).*sin(P);%创建一个BP神经网络,每一个输入向量的取值范围为
35、-1,1,隐含层有21个神经元,%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为logsig,%训练函数为梯度下降函数,即节中所描述的标准学习算法。%可改变隐含层神经元个数为2、8、10、20测试网络性能net=newff(-1 1,21,1,tansig,tansig,traingd);%可以改变训练步数为3000、5000、10000来查看网络的训练结果=500;%目标误差设为0.01=0.01;%设置学习速率为0.1,演示程序,LP.lr=0.1;net=train(net,P,T);%有-标记间的部分为拟合函数时的程序,有+标记间的部分为测试时的程序%-y=si
36、m(net,P);subplot(2,1,1)hndl1=plot(P,y);%设置线宽为2set(hndl1,linewidth,2);%设置线的颜色为红色set(hndl1,color,red);hold on,演示程序,hndl2=plot(P,T);set(hndl2,linewidth,2);%设置图形标题title(BP神经网络逼近函数);%下面为BRF神经网络对函数的逼近%建立一个径向基神经网络,对非线性函数进行逼近,并作出网络的逼近误差曲线。%输入从0开始变化到4,每次变化幅度为0.1p=0:0.2:4;t=exp(-p).*sin(p);%建立一个目标误差为0,径向基函数的分
37、布密度为0.5,隐含层神经元个数的最大值为21,每%增加5个神经元显示一次结果net=newrb(p,t,0,0.5,21,5);,演示程序,ysim=sim(net,p);subplot(2,1,1)hndl1=plot(p,ysim);%设置线宽为2set(hndl1,linewidth,2);%设置线的颜色为红色set(hndl1,color,red);hold on%因原函数与逼近函数重合,要看到两个图像y应该加一个小的偏移%hndl2=plot(p,t+0.01);hndl2=plot(p,t);set(hndl2,linewidth,2);%设置图形标题title(RBF神经网络逼
38、近函数);,实验七RBF神经网络的构建与使用,思考题1、实验中构建的RBF神经网络的合适的扩展参数在什么范围内?2、实验中构建的RBF神经网络的合适的隐含层神经元的个数最大值在什么范围内?,谢谢!,实验八 SOM神经网络的构建与使用讲解,实验八SOM神经网络的构建与使用,实验八SOM神经网络的构建与使用,使用SOM神经网络对指定数据进行聚类,实验八SOM神经网络的构建与使用,存在的问题1、单值向量与下标向量的转换2、竞争层的网络拓扑结构3、聚类结果的显示 4、竞争层神经元的数量,实验八SOM神经网络的构建与使用,实验内容1对指定数据进行聚类并测试,实验八SOM神经网络的构建与使用,实验内容2:
39、单值向量与下标向量的转换结果显示,实验八SOM神经网络的构建与使用,vec2ind()功能 将单值向量组变换成下标向量格式 ind=vec2ind(vec)说明 式中,vec为m行n列的向量矩阵x,x中的每个列向量i,除包含一个1外,其余元素均为0,ind为n个元素值为1所在的行下标值构成的一个行向量。,实验八SOM神经网络的构建与使用,C=1 1 1 2 2 2 2 1 1 1,(1,1)1(1,2)1(1,3)1(2,4)1(2,5)1(2,6)1(2,7)1(1,8)1(1,9)1(1,10)1,实验八SOM神经网络的构建与使用,实验内容3:观测竞争层神经元个数改变的影响隐含层神经元的布
40、置:3 5、4 5、5 8,演示程序1,%clcclearclose all%建立一个自组织神经网络对上述数据分类,%测试训练后的自组织神经网络的性能,判断其属于哪个类别。P=-6-4-2-4-6 0-4-6 4-6;0 2-2 2 0-2 2 0-2 0;%创建一个自组织神经网络,0 1;0 1表示输入数据的取值范围在0,1之间,%3,4表示竞争层组织结构为3 4,其余参数取默认值。,演示程序1,%竞争层也可以选取下面布局形式:3 5、4 5、5 8,拓扑结构有gridtop,hextop,randtopnet=newsom(0 1;0 1,5 8);=100;net=init(net);n
41、et=train(net,P);y=sim(net,P)%pausey=vec2ind(y),演示程序1,%pause%获取训练后的自组织神经网络的权值w1=net.IW1,1;%绘出训练后自组织神经网络的权值分布图plotsom(w1,net.layers1.distances);q=1:1:10;plot(q,y,bd,MarkerFaceColor,b,MarkerSize,10),演示程序1,hold on%输入测试数据p=-6;0;%对网络进行测试y_test=sim(net,p);%将测试数据所得到的将单值向量组变换成下标向量y_test=vec2ind(y_test);r=1;p
42、lot(r,y_test,ro,MarkerFaceColor,r,MarkerSize,10),实验八SOM神经网络的构建与使用,思考题1、实验中构建的SOM神经网络合适的竞争层神经元布局中哪种?2、构建的SOM神经网络每一次运行的结果是不是都一样?,谢谢!,实验九 Elman神经网络实验程序,%根据预测方法得到输入向量和目标向量P=0.4413 0.4707 0.6953 0.8133 0.4379 0.4677 0.6981 0.8002 0.4517 0.4725 0.7006 0.8201;0.4379 0.4677 0.6981 0.8002 0.4517 0.4725 0.700
43、6 0.8201 0.4557 0.4790 0.7019 0.8211;0.4517 0.4725 0.7006 0.8201 0.4557 0.4790 0.7019 0.8211 0.4601 0.4811 0.7101 0.8298;T=0.4557 0.4790 0.7019 0.8211;0.4601 0.4811 0.7101 0.8298;0.4612 0.4845 0.7188 0.8312;%输入向量的取值范围为0 1,用threshold来标记threshold=0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;,%创建一个E
44、lman神经网络,隐含层的神经元个数为17个,4个输出层神经元,隐含层激活函%数为tansig,输出层激活函数为purelin net=newelm(threshold,17,4,tansig,logsig,trainlm);=3000;=0.01;LP.lr=0.1;net=train(net,P,T);%输入测试数据 P_test=0.4557 0.4790 0.7019 0.8211 0.4601 0.4811 0.7101 0.8298 0.4612 0.4845 0.7188 0.8312;T_test=0.4615 0.4891 0.7201 0.8330;,y=sim(net,P_test)%在测试数据下,计算网络的输出和实际目标向量之间的差值error=y-T_test;%在坐标平面上画出差值曲线 plot(1:4,error,-);figure%测试数据的目标数据与预测数据的关系图plot(y,T_test,r-);hold on x=0:0.2:1;u=0:0.2:1;plot(x,u,b-),