《人工神经网络仿真实例.ppt》由会员分享,可在线阅读,更多相关《人工神经网络仿真实例.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、3.4 仿真实例 主讲人:殷欣主讲人:殷欣 Page 2例3-1试用多层感知器解决异或问题n 解:对于异或运算可以将问题转化为两类模式(即输入、输出模式)的分类问题。n 异或问题的输入输出映射如下表所示:数据点数据点k输入模式输入模式X(k)期望输出期望输出d(k)1(1,1)02(0,1)13(0,0)04(1,0)1Page 3解决该异或问题的网络结构如下:+1+1+1+1+1+1+1-2-0.5-1.5+1-0.5y神经元2神经元1神经元3x1x2输入层隐含层输出层Page 4 newp函数建立多层感知器np = 0 0 1 1; 0 1 0 1; %训练样本nt = 0 1 1 0;
2、%目标函数nnet1 = newp(0 1; 0 1, 2); % 新建第一层感知器,两个神经元nnet1.inputWeights1.initFcn = rands; %随机生成权值nnet1.biases1.initFcn = rands; %随机生成阀值ni=0; %设变量i初值为0nwhile i=0 n net1 = init(net1); %对第一层感知器初始化n a1 = sim(net1, p); % 第一层输出作为第二层输入a1n net2 = newp(0 1; 0 1, 1); % 新建第二层感知器,一个神经元n net2.trainParam.epochs = 10;
3、%训练次数为十次n net2.trainParam.show = 1; %设置迭代次数为1n net2 = train(net2, a1, t); %训练当前网络n a2 = sim(net2, a1) %对该神经网络进行仿真n if a2 = tn i=1;n endnendPage 5运行得到的结果:n a2 =0 0 0 0n a2 =0 0 0 0n a2 =0 0 0 0n a2 =0 0 0 0n a2 =1 1 1 1n a2 =0 0 0 0n a2 =0 0 0 0n a2 =1 1 0 0n a2 =0 1 1 0Page 6例3-2试设计BP网络来实现下面数组的函数关系n
4、 P=-1:0.1:1;n T=-0.96 -0.577 -0.729 -0.377 0.641 0.66 0.461 0.1336 -0.201n -0.434 -0.5 -0.393 -0.1647 0.0988 0.3072 0.396 0.3449n 0.1816 -0.0312 -0.2183 -0.3201;n 解:首先对网络进行初始化:n R,Q=size(P); %P为R*Q的矩阵n S2,Q=size(T); %T为S2*Q的矩阵n S1=5; %选择隐含层神经元为5n w1,b1=rands(S1,R); %随机获得输入层到隐含层的阀值和权重n w2,b2=rands(S2
5、,S1); %随机获得隐含层到输出层的阀值和权重Page 7n 用矢量P计算网络的输出:n A1=tansig(w1*P,b1); %tansig为正切S型传递函数n A2=purelin(w2*A1,b2); %purelin为线性传递函数n 下面定义网络训练参数:n disp_fqre=10; %间隔次数设置为10 n max_epoch=3000; %最大训练次数设置为3000n err_goal=0.02; %期望误差设置为0.02n lr=0.01; %学习效率设置为0.01n TP=disp_fqre,max_epoch,err_goal,lr; n w1,b1,w2,b2,te,
6、tr=trainbpx(w1,b1,tansig,w2,b2,purelin,P,T,TP) %用BP算法进行训练Page 8BP网络训练过程(一)Page 9nnet=newff(minmax(P),5,1,tansig,purelin,traingdm) %创建一个前馈BP网络nY=sim(net,P);nE1=T-Y;nperf=mse(E1,net); %对误差进行均方差性能分析nvv.P=P;nvv.T=T;nnet.trainParam.epoch=80000;nnet,tr=train(net,P,T,vv);nA=sim(net,P);nE2=T-A;nperf2=mse(E2
7、,net); nfigure;nplot(P,T,-g+);nhold onnplot(P,Y,-ro);nhold onnplot(P,A,-b);Page 10网络的训练误差记录图:Page 11运行结果如下:如图所示:绿色如图所示:绿色线表示的是目标线表示的是目标矢量相对于输入矢量相对于输入适量的波形图;适量的波形图;红色代表的是初红色代表的是初始网络输出波形始网络输出波形图;蓝色代表的图;蓝色代表的是训练后网络的是训练后网络的输出波形。输出波形。Page 12例3-3试用加入动量项的BP网络实现下面输入/输出关系nP=-6.0 -6.1 -4.1 -4.0 5.0 -5.1 6.0 6
8、.1;nT=0 0 0.97 0.99 0.01 0.03 1.0 1.0;nnet=newff(minmax(P),3,1,tansig,purelin,traingdm)ninputWeights=net.IW1,1ninputbias=net.b1nlayerWeights=net.LW2,1nlayerbias=net.b2nnet.TrainParam.show=50;nnet.TrainParam.lr=0.05;nnet.TrainParam.mc=0.9;nnet.TrainParam.epoch=500;nnet.TrainParam.goal=0.001; %期望误差设置为
9、0.001nnet,tr=train(net,P,T);nA=sim(net,P)nE=T-A;nMSE=mse(E)nhold onPage 13网络的训练误差记录图:Page 143-4试用RBF网络解决异或问题X2X1w11w11Output yX1X2X1X2000011101110XOR异或异或空间变换前2() x1( ) xPage 1522|21exp),(ikiikXXXXX1X2000.13531010.36790.3679100.36790.36791110.1353基函数基函数 21|1uxex 22|2uxexTu 1 , 1 1Tu 0 , 0 2 x2 x1 x22
10、22112|(1)(1)1Xuxx x121|11( )0.3679x uxeePage 16Page 17例3-5试设计RBF网络来实现例3-2的输入/输出关系nP=-1:0.1:1;nT=-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; nfigure(1) nplot(P,T,+); ndisp_freq=10; %显示间隔次数 nmax_neuron=
11、100;%最多神经元数 nerr_goal=0.02;%目标误差平方和 nsc=1; %径向基函数的分布常数 ndp=disp_freq max_neuron err_goal sc; nW1,b1,W2,b2=solverb(P,T,dp); ny=simurb(P,W1,b1,W2,b2); nhold onnfigure(2) nplot(P,T,-,P,y,o) nxlabel(Input); nylabel(Output); nlegend(目标值, 训练后输出); Page 18RBF网络的逼近结果如图所示:Page 19下图为目标值与训练后输出值之间的关系图:Page 20例3-
12、6试用BP网络进行09十个数字字符的识别n 利用BP神经网络对阿拉伯数字进行识别前,应先对阿拉伯数字位图样本进行预处理,即先将256色位图转为灰度图,然后二值化,最后进行归一化处理,以消除各数字在位置和大小上的差异,从而提高识别的准确率。归一化处理后的字符便可进行特征向量提取。将所提取的特征输入到神经网络进行识别,最后输出并显示识别结果。Page 21n 对于数字采用5*5共25点阵的形式,使用美观的数码管字体。n 首先,要选择一种编码方式。这里采用的是直接0-1编码的方式。比如数字1,可以编码为:n0 0 1 0 0n0 0 1 0 0n0 0 1 0 0n0 0 1 0 0n0 0 1 0 0n 但是上图只是图像系统得到的结果,实际的图像系统总会存在一些噪声干扰或者是非线性因素。Page 22数字识别试验样本Page 23如图所示,红色代表未经过误差训练的网络,蓝色代表经过误差训练的网络。Page 24 谢谢观赏!