您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > MATLAB神经网络工具箱(函数拟合)
MATLAB神经网络工具箱介绍及实验要求神经元模型NeuronModel:多输入,单输出,带偏置输入:R维列向量1[,]TRppp权值:R维行向量111[,]Rwwwb阈值:标量求和单元11Riiinpwb传递函数f输出()afbwp常用传递函数aWp-b1-1阈值函数1(0)()hardlim()0(0)nafnnnMATLAB函数:hardlim1(0)()hardlim()1(0)nafnsnnMATLAB函数:hardlims线性函数PurelinTransferFunction:()afnnanMATLAB函数:purelinSigmoid函数SigmoidFunction:特性:值域a∈(0,1)非线性,单调性无限次可微|n|较小时可近似线性函数|n|较大时可近似阈值函数1()1nafneMATLAB函数:logsig(对数),tansig(正切)对数Sigmoid函数正切Sigmoid函数tanh()nnnneeanee单层神经网络模型R维输入,S个神经元的单层神经网络模型111212121211RRSSSRW12Sbbbb()faWp+b多层神经网络模型前馈神经网络前馈神经网络(feedforwardNN):各神经元接受前级输入,并输出到下一级,无反馈,可用一有向无环图表示。前馈网络通常分为不同的层(layer),第i层的输入只与第i-1层的输出联结。可见层:输入层(inputlayer)和输出层(outputlayer)隐藏层(hiddenlayer):中间层感知器(perceptron):单层前馈网络传递函数为阈值函数主要功能是模式分类感知器的生成函数newp用来生成一个感知器神经网络net=newp(pr,s,tf,lf)net:函数返回参数,表示生成的感知器网络pr:一个R×2矩阵,由R维输入向量的每维最小值和最大值组成s:神经元的个数tf:感知器的传递函数,默认为hardlim,可选hardlimslf:感知器的学习函数,默认为learnp,可选learnpnnet=newp([-2,+2;-2,+2],2)%生成一个二维输入,两个神经元的感知器newp感知器的权值和阈值初始化newp默认权值和阈值为零(零初始化函数initzero).net=newp([-2,+2;-2,+2],2);W=net.IW{1,1}%显示网络的权值b=net.b{1}%显示网络的阈值W=0000b=00改变默认初始化函数为随机函数randsnet.inputweights{1,1}.initFcn=‘rands’;net.biases{1}.initFcn=‘rands’;net=init(net);%重新初始化直接初始化定义权值和阈值net.IW{1,1}=[12;34];net.b{1}=1感知器学习感知器学习算法权值增量:()TTWtapep阈值增量:btae权值更新:newold阈值更新:newoldbbb算法改进()TTtapepWpp输入样本归一化权值和阈值训练与学习函数trainnet=train(net,P,T)设计好的感知器并不能马上投入使用.通过样本训练,确定感知器的权值和阈值.输入向量目标向量被训练网络net.trainParam.epochs=10;%预定的最大训练次数为10,感知器经过最多训练10次后停止,adaptnet=adapt(net,P,T)自适应训练函数权值和阈值学习函数learnpdW=learnp(W,P,Z,N,A,T,E,D,gW,gA,LP,LS)dW:权值或阈值的增量矩阵W:权值矩阵或阈值向量P:输入向量T:目标向量E:误差向量其他可以忽略,设为[]learnpn归一化学习函数网络仿真函数sima=sim(net,P)输入向量网络输出分类结果显示绘图函数plotpvplotpv(P,T)plotpcplotpc(W,b)画输入向量的图像画分类线根据给定的样本输入向量P和目标向量T,以及需分类的向量组Q,创建一个感知器,对其进行分类.例:创建一个感知器P=[-0.5-0.60.7;0.800.1];%已知样本输入向量T=[110];%已知样本目标向量net=newp([-11;-11],1);%创建感知器handle=plotpc(net.iw{1},net.b{1});%返回划分类线的句柄net.trainParam.epochs=10;%设置训练最大次数net=train(net,P,T);%训练网络Q=[0.60.9-0.1;-0.1-0.50.5];%已知待分类向量Y=sim(net,Q);%二元分类仿真结果figure;%新建图形窗口plotpv(Q,Y);%画输入向量handle=plotpc(net.iw{1},net.b{1},handle)%画分类线实验一利用感知器进行分类(1)一个经过训练的感知器对5个输入向量进行分类(2类)。Step1两个长度为5的向量构成输入样本矩阵P,行向量T为目标向量。利用PLOTPV画出这个向量的图像。例如:P=[-0.5-0.5+0.3-0.1-4;-0.5+0.5-0.5+1.05];T=[11001];plotpv(P,T);%plotpv函数利用感知器的输入向量和目标向量来画输入向量的图像Step2建立神经网络画输入向量的图像MATLAB提供函数newp来创建一个指定的感知器。第一个参数指定了期望的两个输入向量的取值范围,第二个参数指定了只有一个神经元。net=newp([-401;-150],1);注意:这个神经元的传递函数是hardlim函数,也就是阶跃函数。取0,1两个值。Hardlims函数,取-1,1两个值。实验一利用感知器进行分类(2)添加神经元的初始化值到分类图Step3初始化的权值被设为0,因此任何输入都会给出同样的输出,并且分类线不会出现在这个图中,不用害怕,我们会继续训练这个神经网。holdonlinehandle=plotpc(net.IW{1},net.b{1});//plotpc函数用来画分类线训练神经网络Step4Matlab提供了adapt函数来训练感知器,adapt函数返回一个新的能更好的执行分类、网络的输出、和误差的神经网络,这个划线函数允许网络从3个角度去调整,画分类线一直到误差为0为止。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实验一利用感知器进行分类(3)Step5模拟simsim函数能被用来划分任何别的输入向量,例如划分一个输入向量[0.7;1.2].这个新点的图像为红色,他将用来显示这个感知器如何把这个新点从最初的训练集取分开来。p=[0.7;1.2];a=sim(net,p);//利用模拟函数sim计算出新输入p的神经网络的输出plotpv(p,a);circle=findobj(gca,'type','line');set(circle,'Color','red');打开hold,以便于以前的图像不被删除。增加训练装置和分类线在图中。holdon;plotpv(P,T);plotpc(net.IW{1},net.b{1});holdoff;axis([-22-22]);这个感知器正确的区分了我们的新点(用红色表示)作为”zero”类(用圆圈表示),而不是”one”类(用+号表示),尽管需要比较长的训练时间,这个感知器仍然适当的进行了学习。最后放大感兴趣的区域。BP网络多层前馈网络主要功能:函数逼近,模式识别,信息分类传递函数:隐层采用S形函数,输出层S形函数或线性函数BP网络的生成newff函数newff用来生成一个BP网络net=newff(PR,[S1S2...SN],{TF1TF2...TFN},BTF,BLF,PF)PR:一个R×2矩阵,由R维输入向量的每维最小值和最大值组成Si:第i层的神经元个数TFi:第i层的传递函数,默认为tansigBTF:训练函数,默认为trainlmBLF:学习函数,默认为learngdmPF:性能函数,默认为msenet=newff([0,10;-1,2],[5,1],{‘tansig’,’purelin’},’trainlm’);%生成一个两层BP网络,隐层和输出层神经的个数为5和1,传递函数分别为tansig和purelin,训练函数为trainlm,其他默认BP网络的初始化newff函数在建立网络对象的同时,自动调用初始化函数,根据缺省的参数设置网络的连接权值和阈值.使用函数init可以对网络进行自定义的初始化.通过选择初始化函数,可对各层连接权值和阈值分别进行不同的初始化.BP网络的学习规则权值和阈值的调节规则采用误差反向传播算法(backpropagation).反向传播算法分二步进行,即正向传播和反向传播。1.正向传播输入的样本从输入层经过隐单元一层一层进行处理,通过所有的隐层之后,则传向输出层;在逐层处理的过程中,每一层神经元的状态只对下一层神经元的状态产生影响。在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。2.反向传播反向传播时,把误差信号按原来正向传播的通路反向传回,并对每个隐层的各个神经元的权系数进行修改,以望误差信号趋向最小。BP算法实质是求取误差函数的最小值问题。这种算法采用非线性规划中的最速下降方法,按误差函数的负梯度方向修改权系数。BP网络的快速学习算法与选择学习算法适用问题类型收敛性能占用存储空间其他特点trainlm函数拟合收敛快,误差小大性能随网络规模增大而变差trainrp模式分类收敛最快较小性能随网络训练误差减小而变差trainscg函数拟合模式分类收敛较快性能稳定中等尤其适用于网络规模较大的情况trainbfg函数拟合收敛较快较大计算量岁网络规模的增大呈几何增长traingdx模式分类收敛较慢较小适用于提前停止的方法MATLAB神经网络工具箱对常规BP算法进行改进,提供了一系列快速算法,以满足不同问题的需要BP网络的训练利用已知的”输入—目标”样本向量数据对网络进行训练,采用train函数来完成.训练之前,对训练参数进行设置训练参数参数含义默认值net.trainParam.epochs训练步数100net.trainParam.show显示训练结果的间隔步数25net.trainParam.goal训练目标误差0net.trainParam.time训练允许时间INfnet.trainParam.lr学习率0.01net=train(net,P,T)BP网络的设计(1)网络层数已经证明,单隐层的BP网络可以实现任意非线性映射.BP网络的隐层数一般不超过两层.输入层的节点数输入层接收外部的输入数据,节点数取决于输入向量的维数输出层的节点数输出层的节点数取决于输出数据类型和该类型所需的数据大小.对于模式分类问题,节点数为2logmBP网络的设计(2)隐层的节点数隐层的节点数与求解问题的要求,输入输出单元数多少有关.对于模式识别/分类的节点数可按下列公式设计传递函数隐层传递函数采用S型函数,输出层采用S型函数或线性函数训练方法及其参数选择针对不同应用,BP网络提供了多种训练学习方法.0innnan其中为隐层节点数,in为输入节点数,a为1~10之间的整数BP网络设计实例采用动量梯度下降算法训练BP网络.训练样本%定义训
本文标题:MATLAB神经网络工具箱(函数拟合)
链接地址:https://www.777doc.com/doc-5459193 .html