MATLAB神经网络之各函数介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

绘制三维图形

clear all;

[x,y]=meshgrid(-8:0.1:8);

z=sinc(x);

mesh(x,y,z); 效果图如下

set(gcf,'color','w'); 设置图形窗口背景为白色

修改z的赋值

clear all;

[x,y]=meshgrid(-10:0.3:10);

r=sqrt(x.^2+y.^2)+eps;

z=sin(r)./r;

mesh(x,y,z)

初始化函数

clear all;

net=newp([0,1;-2,2],1);

disp('³õʼ»¯Ö®Ç°µÄȨֵÊÇ£º ')

w1=net.iw{1,1}

disp('³õʼ»¯Ö®Ç°µÄ·§ÖµÎª')

b1=net.b{1}

net.iw{1,1}=[5,6];

disp('¡£¡£¡£È¨ÖµÎª')

w2=net.iw{1,1}

net.b{1}=7;

disp('·§ÖµÎª')

b2=net.b{1}

net=init(net); 利用网络初始化复原网络权值和阀值w3=net.iw{1,1}

b3=net.b{1}

例子:利用init函数将网络输入的权值与阀值改变为随机数

>> clear all;

net=newp([0,1;-2,2],1);

net.inputweights{1,1}.initFcn='rands';

net.biases{1}.initFcn='rands';

net=init(net); 检验权值和阀值

w=net.iw{1,1}

b=net.b{1}

w =

0.8116 -0.7460

b =

0.6294

>>

plotpv函数:用于在坐标中绘制给定的样本点及其类别

plotpc函数:用于绘制感知器分界线

clear all;

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

linehandles=plotpc(net.IW{1},net.b{1});

net.adaptParam.passes=3;

linehandle=plotpc(net.IW{1},net.b{1});

for a=1:25

[net,y,e]=adapt(net,p,t);

linehandle=plotpc(net.iw{1},net.b{1},linehandle); drawnow;

end

title('the kind of xiangliang')

在matlab中提供了sim函数,对于神经网络进行仿真,格式:

[y,pf,af,perf]=sim(net,p,pi,ai,t)

[y,pf,af]=sim(net,{q ts},pi,ai)

设计一个输入为二维向量的感知器网络,其边界值已定。

clear all;

format compact

net=newp([-2,2;-2,2],1);

net.IW{1,1}=[-1,1];

net.b{1}=[1];

p1=[1;1];

a1=sim(net,p1)

p2=[1;-1];

a2=sim(net,p2)

p3={[1;1],[1;-1]};

a3=sim(net,p3)

得到

a1 =

1

a2 =

a3 =

[1] [0]

性能函数

Matlab神经网络工具箱提供了mae函数,用于求网络的平均绝对误差性能。感知器的学习规则为调整网络的权值和阀值,使得网络的平均绝对误差和最小。调用格式:

Perf=mae(e,y,x,fp)

Dperf_dy=mae(‘dy’,e,y,x,perf,fp)

Dperf_dx=mae(‘dx’,e,y,x,perf,fp)

Info=mae(‘code’)

其中,e为误差矩阵或向量(e=t-y, t表示网络的目标向量);y是网络的输出向量(可以忽略);x为所有权值和偏值向量;fp为性能参数,perf表示平均绝对误差;dperf_dy表示返回perf对y 的导数;mae(code)将根据code值的不同,返回不同的信息;

返回的信息包括:

当code=name时,表示返回函数全称

当code=pnames时,表示返回训练参数的名称

当code=pdefaults时,表示返回默认的训练参数

创建一个感知器神经网络,求其平均绝对误差

clear all;

net=newp([-10,10],1);

p=[-10,-5,0,5,10];

t=[0,0,1,1,1];

y=sim(net,p)

e=t-y

perf=mae(e)

得到:

y =

1 1 1 1 1

e =

-1 -1 0 0 0

perf =

0.4000

训练函数

函数:train函数,用于训练一个神经网络。网络训练函数是一个通用的学习函数,训练函数重复的把一组输入向量应用到一个网络上,每次都更新网络,直到达到某种准则。停止准则的可能是最大的学习次数,最小的误差梯度或者误差目标。

格式:[net,tr,y,e,pf,af]=train(net,p,t,pi,ai)

其中,net 是训练后的网络,tr为训练纪录,y为网络输出,e为误差向量;pf为训练终止时的输入延时状态,af为训练终止时的层延时状态;

其中,net为训练之前的网络,p为网络的输入向量矩阵;t表示网络的目标矩阵,默认值是0;pi表示初始输入延时,默认值是0;ai表示初始的层延时,默认值是0;

本例子尝试建立一个感知器模型,实现电路“或”们的功能,从而实现对输入的分类

clear all;

p=[0,0,1,1;0,1,0,1];

t=[0,1,1,1];

net=newp(minmax(p),1);

y=sim(net,p)

net.trainParam.epochs=20;

net=train(net,p,t);

y=sim(net,p);

err1=mae(y-t)

plotpv(p,y)

title('ÏòÁ¿Àà±ð')

相关文档
最新文档