
数学建模培训.docx
4页数学建模培训; 常用的人工神经网络案例1 感知器网络MatLab上机实验例1.1用newp函数设计一个单输入和一个神经元的感知器神经网络,输入的最小值和最大值为《0,2《>> net=newp([0 2],1);可以用下面语句来察看生成了一个什么样的神经网络>> inputweights = net.inputWeights{1,1}inputweights = delays: 0 initFcn: 'initzero'learn: 1learnFcn: 'learnp'learnParam: []size: [1 1]userdata: [1x1 struct]weightFcn: 'dotprod' weightParam: [1x1 struct]从中可以看到,缺省的学习函数为learnp,网络输入给hardlim传递函数的量为数量积dotprod,即输入量和权值矩阵的乘积,然后再加上阈值缺省的初始化函数为initzero,即权值的初始值置为0同样地,>> biases = net.biases{1,1}biases =initFcn: 'initzero'learn: 1learnFcn: 'learnp' learnParam: []size: 1userdata: [1x1 struct]例1.2设计一个输入为二维向量的感知器网络,其边界值已定。
>> net = newp([-2 2;-2 2],1);和上面的例子一样,权值和阈值的初始值为0如果不想预置为0,那么必须独自生成示例,两个权值和阈值分别为[-1 1]和1,应用如下语句: >> net.IW{1,1}=[-1 1];>> net.b{1,1}=[1]; 应用下面语句验证一下:>> net.IW{1,1}ans =-1 1>> net.b{1,1}ans =1下面来看这个感知器网络对两个输入信号的输出如何,两个信号分别位于感知器两个边界第一个输入信号:>> P1=[1;1];>> a1=sim(net,P1)a1 =1第二个输入信号:>> P2=[1;-1]; >> a2=sim(net,P2)a2 =0由此看出,输出是正确的,感知器为输入信号进行了正确的分类假设将两个输入信号组成一个数列,那么输出量也为一个数列>> P3={[1;1],[1;-1]}; >> a3=sim(net,P3)a3 =[1][0]例1.3首先有newp函数生成一个神经网络>> net = newp([-2 2;-2 2],1); 其权值为:>> wts = net.IW{1,1}wts = 0 0 其阈值为: >> bias = net.b{1,1}bias =0改变权值和阈值:>> net.IW{1,1}=[3,4]; >> net.b{1,1}=[5];检查权值和阈值,的确已经改变了:>> wts=net.IW{1,1}wts = 3 4 >> bias=net.b{1,1}bias =5然后应用init来还原权值和阈值。
>> net=init(net);>> wts = net.IW{1,1}wts = 0 0 >> bias=net.b{1,1} bias =0由此可见,应用init可以还原感知器初始值 例1.4应用init改变网络输入的权值和阈值为随机数>> net.inputweights{1,1}.initFcn='rands';>> net.biases{1,1}.initFcn='rands'; >> net=init(net);下面验证一下权值和阈值:>> wts = net.IW{1,1}wts =0.8116-0.7460>> bias=net.b{1,1}bias =0.6294 例1.5若一个二维向量输入的感知器神经网络,其输入和冀望值样本为:《2《《1《《《2《《《1《p1《《《,t1《0、p2《《《,t2《1、p3《《《,t3《0、p4《《《,t4《1《2《《《2《《2《《1《首先,生成一个感知器网络,然后利用train函数进行训练 >> net = newp([-2 2;-2 2],1);>> net.trainParam.epochs=1;%设置最大迭代次数 >> p=[2 1 -2 -1;2 -2 2 1];%样本 >> t=[0 1 0 1];%导师信号 >> net = train(net,p,t); >> w=net.IW{1,1}w =-3-1>> b=net.b{1,1} b = 0 对输入向量进行仿真验证 >> sim(net,p)ans =0 0 1 1 可见,网络仿真结果没有到达冀望值,通过调整训练最大次数可以看其结果。
>> net.trainParam.epochs=20; >> net = train(net,p,t); >> sim(net,p)ans =0 1 0 1因此训练是成功的,训练规那么具有一定的收敛性,并且能够到达精度 例1.6设计一个二输入感知器神经网络,将五个输入向量分为两类P=[-0.5 -0.5 0.5 -0.1;-0.5 0.5 -0.5 1.0] T=[1 1 0 0]首先,应用newp构造一个神经元感知器神经网络,然后利用plotpv画出输入向量图,与冀望值1对应的输入向量用“+〞表示,与冀望值0对应的输入向量用“o〞表示>> P=[-0.5 -0.5 0.5 -0.1;-0.5 0.5 -0.5 1.0]; >> T=[1 1 0 0];>> net = newp([-1 1;-1 1],1); >> plotpv(P,T);>> p=[0.7;1.2];>>net=train(net,P,T); >> a=sim(net,p)a =0>> plotpv(p,a); >> hold on >> plotpv(P,T); 。
