《2022年神经网络分类 .pdf》由会员分享,可在线阅读,更多相关《2022年神经网络分类 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验一利用神经网络进行分类(转载于陕西理工学院数学系中心实验室周涛副教授的工作,在此表示感谢)一个经过训练的 2 输入神经元对 5 个输入向量进行分类(2 类)。结合一个例子给出步骤。实验内容(说明:这里的许多参数都可以更改,希望大家能对这个程序的参数进行修改;同时也欢迎大家提问)步骤一:两个长度为 5 的向量构成输入样本矩阵P,行向量 T 为指导向量。利用PLOTPV 画出这个向量的图像。例如:P=-0.5-0.5+0.3-0.1-4;-0.5+0.5-0.5+1.0 5;T=1 1 0 0 1;plotpv(P,T);/plotpv 函数利用感知器的输入向量和监督向量来画输入向量的图像注意
2、:在上面的式子中,4 输入向量比 5 输入向量有更小的数量级,这个感知器必须把 P 中的 5 个输入向量分成两类(依赖于T)。步骤二 建立神经网络MATLAB 提供函数 newp 来创建一个指定的感知器。第一个参数指定了期望的两个输入向量的取值范围,第二个参数指定了只有一个神经元。net=newp(-40 1;-1 50,1);注意:这个神经元的激励函数是hardlim 函数,也就是阶越函数。取0,1两个值。Hardlim 三函数,也就是阶越函数。取-1,1 两个值。步骤三 添加神经元的初始化值到分类图初始化的权值被设为0,因此任何输入都会给出同样的输出,并且分类线不会出现在这个图中,不用害怕
3、,我们会继续训练这个神经网。hold on linehandle=plotpc(net.IW1,net.b1);/plotpc函数用来画神经网络的分类线步骤四 训练感知器Matlab 提供了 adapt函数来训练感知器,adapt函数返回一个新的能更好的执行分类、网络的输出、和误差的神经网络,这个划线函数允许网络从3 个角度去调整,画分类线一直到误差为0 为止。E=1;/E 为误差net.adaptParam.passes=3;while(sse(E)/sse函数是用来判定误差E 的函数net,Y,E=adapt(net,P,T);/利用输入样本调节神经网net linehandle=plot
4、pc(net.IW1,net.b1,linehandle);/画出调整以后的分类线名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 6 页 -drawnow;/延迟一段时间end 注意:这将会花费感知器的许多时间来训练。这对这样一个简单问题来说时间是非常长的。追究其原因在于outlier vector,尽管需要很长的训练时间,这个感知器仍然适当的学习并且被用于划分别的输入。步骤五 模拟 sim SIM 函数能被用来划分任何别的输入向量,例如划分一个输入向量 0.7;1.2.这个新点的图像为红色,他将用来显示这个感知器如何把这个新点从最初的训练集取分开来。p=0.7;1.2;a=si
5、m(net,p);/利用模拟函数 sim 计算出新输入 p 的神经网络的输出plotpv(p,a);circle=findobj(gca,type,line);set(circle,Color,red);打开 Hold,以便于以前的图像不被删除。增加训练装置和分类线在图中。hold on;plotpv(P,T);plotpc(net.IW1,net.b1);hold off;axis(-2 2-2 2);最后放大感兴趣的区域。这个感知器正确的区分了我们的新点(用红色表示)作为”zero”类(用圆圈表示),而不是”one”类(用+号表示),尽管需要比较长的训练时间,这个感知器仍然适当的进行了学习
6、。想知道在outlier vectors 的情况下如何减少训练时间,需要做实验一的优化实验Normalized Perceptron Rule 练习 1 熟悉并理解 plotpv,plotpc函数The code below defines and plots the inputs and targets for a perceptron:p=0 0 1 1;0 1 0 1;t=0 0 0 1;plotpv(p,t)The following code creates a perceptron with inputs ranging over the values in P,assigns v
7、alues to its weights and biases,and plots the resulting classification =newp(minmax(p),1);net.iw1,1=-1.2-0.5;net.b1=1;plotpc(net.iw1,1,net.b1)newp函数解释NEWP Create a perceptron.Syntax net=newp net=newp(pr,s,tf,lf)名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 6 页 -Description Perceptrons are used to solve simple(i.e.
8、linearly separable)classification problems.NET=NEWP creates a new network with a dialog box.NET=NEWP(PR,S,TF,LF)takes these inputs,PR-Rx2 matrix of min and max values for R input elements.S-Number of neurons.TF-Transfer function,default=hardlim.LF-Learning function,default=learnp.Returns a new perce
9、ptron.The transfer function TF can be HARDLIM or HARDLIMS.The learning function LF can be LEARNP or LEARNPN.Examples This code creates a perceptron layer with one 2-element input(ranges 0 1 and-2 2)and one neuron.(Supplying only two arguments to NEWP results in the default perceptron learning functi
10、on LEARNP being used.)net=newp(0 1;-2 2,1);Now we define a problem,an OR gate,with a set of four 2-element input vectors P and the corresponding four 1-element targets T.P=0 0 1 1;0 1 0 1;T=0 1 1 1;Here we simulate the networks output,train for a maximum of 20 epochs,and then simulate it again.Y=sim
11、(net,P)net.trainParam.epochs=20;net=train(net,P,T);Y=sim(net,P)Notes Perceptrons can classify linearly separable classes in a 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 6 页 -finite amount of time.If input vectors have a large variance in their lengths,the LEARNPN can be faster than LEARNP.Properties Perceptrons
12、 consist of a single layer with the DOTPROD weight function,the NETSUM net input function,and the specified transfer function.The layer has a weight from the input and a bias.Weights and biases are initialized with INITZERO.Adaption and training are done with TRAINS and TRAINC,which both update weig
13、ht and bias values with the specified learning function.Performance is measured with MAE.实验一的优化Normalized Perceptron Rule 一个经过训练的 2 输入神经元对 5 个输入向量进行分类(2 类)。结合一个例子给出步骤。实验内容:步骤一:两个长度为 5 的向量构成输入样本矩阵P,行向量 T 为指导向量。利用PLOTPV 画出这个向量的图像。例如:P=-0.5-0.5+0.3-0.1-40;-0.5+0.5-0.5+1.0 50;T=1 1 0 0 1;plotpv(P,T);注意:
14、在上面的式子中,4 输入向量比 5 输入向量有更小的数量级,这个感知器必须把 P 中的 5 个输入向量分成两类(依赖于T).步骤二 建立神经网络MATLAB 提供函数 newp 来创建一个指定的感知器。第一个参数指定了期望的两个输入向量的取值范围,第二个参数指定了只有一个神经元。第三个参数指定了激励函数,Learnpn对输入向量大小的变化比learnp(默认的)不敏感。net=newp(-40 1;-1 50,1,hardlim,learnpn);第三步 添加神经元的初始化值到分类图名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 6 页 -初始化的权值被设为0,因此任何输入都会给
15、出同样的输出,并且分类线不会出现在这个图中,不用害怕,我们会继续训练这个神经网。hold on linehandle=plotpc(net.IW1,net.b1);第四步 训练感知器Matlab 提供了 adapt函数来训练感知器,adapt函数返回一个新的能更好的执行分类、网络的输出、和误差的神经网络,这个划线函数允许网络从3 个角度去调整,画分类线一直到误差为0 为止。注意:这将会花费感知器的许多时间来训练。这对这样一个简单问题来说时间是非常长的。追究其原因在于outlier vector,尽管需要很长的训练时间,这个感知器仍然适当的学习并且被用于划分别的输入。E=1;net.adaptP
16、aram.passes=3;while(sse(E)net,Y,E=adapt(net,P,T);linehandle=plotpc(net.IW1,net.b1,linehandle);drawnow;end 注意:用 learnp进行训练需要 3 个时间单位,而用learnpn解决同样的问题需要 32 个时间单位,因此,当输入向量的大小发生很大变化时,learnpn 比 learnp要用的普遍。第 5 步 模拟 sim SIM 函数能被用来划分任何别的输入向量,例如划分一个输入向量 0.7;1.2.这个新点的图像为红色,他将用来显示这个感知器如何把这个新点从最初的训练集取分开来。p=0.7
17、;1.2;a=sim(net,p);plotpv(p,a);circle=findobj(gca,type,line);set(circle,Color,red);打开 Hold,以便于以前的图像不被删除。增加训练装置和分类线在图中。hold on;plotpv(P,T);plotpc(net.IW1,net.b1);hold off;axis(-2 2-2 2);最后放大感兴趣的区域这个感知器正确的区分了我们的新点(用红色表示)作为”zero”类(用圆圈表示),而不是”one”类(用+号表示),这个感知器在较短的时间内适当的学习。线性不可分向量名师资料总结-精品资料欢迎下载-名师精心整理-第
18、 5 页,共 6 页 -一个 2 输入神经元对模为5 的输入向量不能进行分类。因为他们是线性不可分的。P=-0.5-0.5+0.3-0.1-0.8;-0.5+0.5-0.5+1.0+0.0;T=1 1 0 0 0;plotpv(P,T);net=newp(-40 1;-1 50,1);hold on plotpv(P,T);linehandle=plotpc(net.IW1,net.b1);net.adaptParam.passes=3;linehandle=plotpc(net.IW1,net.b1);for a=1:25 net,Y,E=adapt(net,P,T);linehandle=plotpc(net.IW1,net.b1,linehandle);drawnow;end;注意:误差为 0 的情况从来不会出现,尽管进行了训练,这个感知器没有变成一个可以接受的分类器。仅仅能进行线性可分数据是感知器的基本限制。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 6 页 -