MATLAB中BP神经网络的重要函数和基本功能

这里是BP神经网络的具体介绍,以及博主自编写的神经网络算法newff()

  • 功能:建立一个前向BP网络
  • 格式:net = newff(PR,[S1,S2,…,SN],{TF1,TF2,…TFN},BTF,BLF,PF)
详细说明:
net:为创建的新的BP神经网络;
PR:Rx2维,为网络输入向量取值范围的矩阵;
[S1,S2,...SN]:表示网络隐含层和输出层神经元的个数;
{TF1,TF2...,TFN}:表示网络隐含层和输出层的传输函数,默认为"tansig";
BTF:表示网络的训练函数,默认为"tansig";
BLF:表示网络的权值学习函数,默认为"learngdom";
PF:表示性能数,默认为"mse"

例题

2.1 蠓虫分类问题
蠓虫分类问题可概括叙述如下:生物学家试图对两种蠓虫(Af 与 Apf)进行鉴别,
依据的资料是触角和翅膀的长度,已经测得了 9 支 Af 和 6 支 Apf 的数据如下:

  • Af:(1.24,1.27),(1.36,1.74),(1.38,1.64),(1.38,1.82),(1.38,1.90),(1.40,1.70),(1.48,1.82),(1.54,1.82),(1.56,2.08).
  • Apf:(1.14,1.82),(1.18,1.96),(1.20,1.86),(1.26,2.00),(1.28,2.00),(1.30,1.96).

(i)根据如上资料,如何制定一种方法,正确地区分两类蠓虫。
(ii)对触角和翼长分别为 (1.24,1.80),(1.28,1.84)(1.40,2.04) 的 3 个标本,用所得到的方法加以识别。

应用BP神经网络解决此题:

matab代码如下:

clear;clc
p1=[1.24,1.27;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90; 
 1.40,1.70;1.48,1.82;1.54,1.82;1.56,2.08]; 
p2=[1.14,1.82;1.18,1.96;1.20,1.86;1.26,2.00 
 1.28,2.00;1.30,1.96]; 
p=[p1;p2]'; 
pr=minmax(p); 
goal=[ones(1,9),zeros(1,6);zeros(1,9),ones(1,6)]; 
plot(p1(:,1),p1(:,2),'h',p2(:,1),p2(:,2),'o') 
net=newff(pr,[3,2],{'logsig','logsig'});  %pr为网络输入向量取值范围的矩阵;[3,2]为隐含层3个,输出层2个;logsig为隐含层和输出层的传输函数
net.trainParam.show = 10;          %每隔10次显示训练迭代过程
net.trainParam.lr = 0.05;          %学习速率
net.trainParam.goal = 1e-10;       %收敛误差
net.trainParam.epochs = 50000;     %最大收敛次数
net = train(net,p,goal);           %训练,输入训练好的net以及输入数据p,期望输出数据goal.
x=[1.24 1.80;1.28 1.84;1.40 2.04]';  %预测数据
y0=sim(net,p) 
y=sim(net,x)

bp神经网络matlab图 matlab bp神经网络函数_bp神经网络matlab图


我们由运行出来的结果可看出,BP神经网络通过9支Af和6支Apf的数据进行运算,得到了较好的精度.且对另外3个标本进行了预测.预测结果为:Apf,Apf,AF


另一个matlab代码:

clear;clc
p1=[1.24,1.27;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90; 
 1.40,1.70;1.48,1.82;1.54,1.82;1.56,2.08]; 
p2=[1.14,1.82;1.18,1.96;1.20,1.86;1.26,2.00 
 1.28,2.00;1.30,1.96]; 
p=[p1;p2]' 
pr=minmax(p) 
goal=[ones(1,9),zeros(1,6);zeros(1,9),ones(1,6)] 
net = newlvq(pr,4,[0.6,0.4]) 
net = train(net,p,goal) 
Y = sim(net,p) 
x=[1.24 1.80;1.28 1.84;1.40 2.04]' 
sim(net,x)
newlvq函数说明: net=newlvq(PR,S1,PC,LR,LF)
PR:Rx2维,为网络输入向量取值范围的矩阵;
S1:隐含层神经元的数目;
PC:列所属类别的百分比
LR:学习速率,默认值为0.01
Lf:学习函数,默认值为learnlv1

bp神经网络matlab图 matlab bp神经网络函数_神经网络_02

两个代码的差异:

  • 第一种:修正和无监督的学习一致,权朝向样品方向移动一小段距离
  • 第二种:权向离开样品方向移动,这样就减少了错误分类的机会