MATLAB神经网络之各函数介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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('ÏòÁ¿Àà±ð')