感知器与BP神经网络的应用

一.感知机
1.生成网络——newp
调用格式:net=newp(pr,s,tf,lf)
功能描述:用于生成能够解决线性可分问题的感知机
参数说明:pr:给出r个输入变量的最大值及最小值的r*2的矩阵
s:神经元的数目 tf:传递函数,能够为‘hardlim’或‘hardlims’,默认为’hardlim’ lf:学习函数,能够为’learnp’或‘learnpn’,默认为‘learnp’
net:生成的感知机
注:生成的网络初始权值和阈值均为0,要想改变初始权值和阈值能够使用赋值语句
net.IW{…}={…} net.b={…}={…}
2.网络初始化——init
调用格式:net=init(net)
功能描述:将神经网络的权值和阈值复原回初始值或将网络的权值和阈值赋予随机数
输入下列命令能够改变网络的权值和阈值为随机数:
net.inputweights{1,1}.initFcn=‘rands’;net.biases{1}.initFcn=‘rands’;net.init(net);
3.神经网络仿真——sim
调用格式:Y=sim(net,P);
功能描述:神经网路仿真工具,用于验证网络的训练效果
参数说明:net-已经生成的神经网络 P-网络输入 Y-网络输出
4.学习规则——learnp
感知器的学习规则以下:设输入向量为p,相应的指望输出为t,对应的网络输出为a。指望值与实际输出值的差值称为学习e=t-a偏差,感知器的权值和阈值修正公式为△w(i,j)=[t(i)-a(i)]*p(j)=e(i)*p(j),△b(i)=e(i) 其中i=1,2,3,…,S, j=1,2,3,…,R 新的权值和阈值为 w(i,j)=w(i,j)+△w(i,j),b(i)=b(i)+△b(i)
learnp dW=learnp(W,P,Z,N,A,T,E,D,gW,gA,LP,LS)
dW:权值或阈值的增量矩阵 W:权值矩阵或阈值向量 P:输入向量 T:目标向量 E:偏差向量 其余能够忽略,可记为[]
5.网络训练——train
经过反复使用sim()和learn()函数调整感知器的权值和阈值,使网络输出知足偏差上的要求,最终找最优的权值和阈值,这一过程称为网络训练。完成网络训练的函数称为train()。
调用格式:[net,tr,Y,E]=train(net,p,t)
功能描述:用于训练网络,以得到最优的权值和阈值
参数说明:输入参数
net-已经生成的神经网络 p-神经网络的输入向量 t-神经网络的指望输出
输出参数
net-经训练后的神经网络 tr-训练记录 Y-网路输出 E-错误率
查看及验证网络训练结果:>>net.IW[1,1] %查看训练后神经网络的权值 ans=-2 -3
>>net.b[1] %查看训练后神经网络的阈值 ans=1
>>a=sim(net,p) %查看训练结果 a=0 1 0 1
*****>>plotpv(p,t) %将训练数据在坐标系中画出web

plotpc(net.IW[1,1],net.b[1]) %画出分隔线
adapt :自适应训练函数 net=adapt(net,P,T)
adaptParam.passes=3;//决定在训练过程当中的重复次数
see(E) %用来判断偏差E的函数
[net,Y,E]=adapt(net,P,T);%利用输入样本调节神经网络
linehandle=plotpc(net.IW{1},net.b{1},linehandle); %画出调整之后的分类线
drawnow; %延迟一段时间
二.BP神经网络******
在这里插入图片描述图片描述](https://img-blog.csdnimg.cn/20190929165918377.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dXUTA3MjY=,size_16,color_FFFFFF,t_70)
在这里插入图片描述网络

三.如下是运行结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述svg