BP神经网络的构建与使用Word下载.docx

上传人:b****5 文档编号:21179599 上传时间:2023-01-28 格式:DOCX 页数:16 大小:495.66KB
下载 相关 举报
BP神经网络的构建与使用Word下载.docx_第1页
第1页 / 共16页
BP神经网络的构建与使用Word下载.docx_第2页
第2页 / 共16页
BP神经网络的构建与使用Word下载.docx_第3页
第3页 / 共16页
BP神经网络的构建与使用Word下载.docx_第4页
第4页 / 共16页
BP神经网络的构建与使用Word下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

BP神经网络的构建与使用Word下载.docx

《BP神经网络的构建与使用Word下载.docx》由会员分享,可在线阅读,更多相关《BP神经网络的构建与使用Word下载.docx(16页珍藏版)》请在冰豆网上搜索。

BP神经网络的构建与使用Word下载.docx

m,

forj=1:

p(1,(i-1)*m+j)=X(i);

p(2,(i-1)*m+j)=Y(j);

end

end

%输出矩阵1*400

Z1=zeros(1,m*m);

Z1(1,(i-1)*m+j)=sin(2*pi*X(i))*sin(2*pi*Y(j));

%BP神经网络

n=10;

%隐层神经元数目

%建立BP网络结构,选择隐层和输出层神经元传递函数分别为

%tansig函数和purelin函数

%网络训练采用Levenberg-Marquardt算法trainlm

net=newff(minmax(p),[n,1],{'

tansig'

'

purelin'

},'

trainlm'

);

%网络训练

net.trainParam.epochs=50;

%训练时间

net.trainParam.goal=0.01;

%训练精度

net.trainParam.lr=0.001;

%学习速率

net=train(net,p,Z1);

Z2=sim(net,p);

%将Z1和Z2转换成ZZ1(20*20),ZZ2(20*20)

ZZ1=zeros(m,m);

ZZ2=zeros(m,m);

ZZ1(i,j)=Z1(1,(i-1)*m+j);

ZZ2(i,j)=Z2(1,(i-1)*m+j);

%期望输出的曲面图

subplot(1,2,1)

surf(X,Y,ZZ1)

title('

期望输出'

%实际输出的曲面图

subplot(1,2,2)

surf(X,Y,ZZ2)

实际输出'

3.实验结果及分析:

运行后,我们得到期望输出和实际输出的曲面图(图1),经过比较,原曲面图和非线性函数的曲面图很接近,这说明,经过训练,BP网络对非线性函数的逼近效果相当好。

图1

下面对网络规模、样本集大小、学习速率等条件进行修改并观察结果,分析这些因素对网络的学习能力、推广能力和性能上的影响。

1)神经元数目n变化

n=5(图2)

图2

n=10(图3)

图3

比较图2和图3,可以看出,隐层神经元的数目对于网络逼近效果有一定的影响,一般来说,隐层神经元数目越多,则BP网络逼近非线性函数的能力越强,而同时网络训练所用的时间相对来说更长一些。

2)样本集大小

40*40(图4)

图4

20*20(图5)

图5

比较图4和图5,可以看出,样本集的数目对于网络逼近效果有一定的影响,一般来说,样本集的数目越多,网络逼近效果越好。

3)学习速率

lr=0.001(图6)

图6

lr=0.01(图7)

图7

比较图6和图7,可以看出,学习速率对于网络逼近效果有一定的影响,一般来说,学习速率越小,网络逼近效果越好,但是学习速率过小会造成训练时间过长。

4.BP算法的改进

拟牛顿算法

图8

Levenberg-Marquardt算法

图9

在前馈反向传播网络应用中,对某一特定的问题,很难确定哪种训练算法最好,因为这取决于问题的复杂性、训练样本数、网络权重和阈值个数以及期望误差等许多因素。

一般来说,网络具有几百个权值时,采用Levenberg-Marquardt算法收敛速度最快。

如果要求正确训练时,该算法的优点更明显。

二、分类

进行Iris数据分类实验,通过实验选择具有最佳性能的网络结构和训练参数,并与最近邻分类器进行性能对比。

K=3;

%类别

N=50;

%每类的样本数目

M=4;

%样本的维数

Q=zeros(M,N*K);

%定义样本矩阵

%---------------读入数据--------------------------

[a,b,c,d]=textread('

iris.txt'

%f%f%f%f%*s'

'

delimiter'

%放入4*150的矩阵中,每一列为一个样本

N*K,

Q(1,i)=a(i);

Q(2,i)=b(i);

Q(3,i)=c(i);

Q(4,i)=d(i);

%将数据分成两部分,一部分用于训练,一部分用于测试

%等间距的方式抽取数据

xn_test=zeros(M,N*K/2);

xn_train=zeros(M,N*K/2);

K*N/2,

M,

xn_test(j,i)=Q(j,i*2-1);

xn_train(j,i)=Q(j,i*2);

%训练目标,测试目标,三类,分别是100,010,001

dn_test=zeros(K,N*K/2);

dn_train=zeros(K,N*K/2);

forj=1:

K,

fori=1:

N/2,

dn_train(j,(j-1)*N/2+i)=1;

dn_test(j,(j-1)*N/2+i)=1;

%----------函数接口赋值----------------------------

NodeNum=20;

%隐层节点数

TypeNum=3;

%输出维数

p1=xn_train;

%训练输入

t1=dn_train;

%训练输出

Epochs=1000;

%训练次数

P=xn_test;

%测试输入

T=dn_test;

%真实分类

%设置网络参数

%隐层的传递函数采用tan-sigmoid输出层采用线性传递函数

TF1='

;

TF2='

%构造BP神经网络,网络训练采用Levenberg-Marquardt算法trainlm

net=newff(minmax(p1),[NodeNumTypeNum],{TF1TF2},'

net.trainParam.epochs=Epochs;

%最大训练次数

net.trainParam.goal=1e-8;

%最小均方误差

net.trainParam.min_grad=1e-20;

%最小梯度

net.trainParam.show=200;

%训练显示间隔

%------------训练与测试----------------------------

net=train(net,p1,t1);

%训练

X=sim(net,P);

%测试-输出为预测值

X=full(compet(X))%竞争输出

%compet:

Competitivetransferfunction

%full:

Convertsparsematrixtofullmatrix

%结果统计

Result=~sum(abs(X-T))%正确分类显示为1

Percent=sum(Result)/length(Result)%正确分类率

图10

对75组测试样本进行分类,其中结果1表示分类正确,0表示分类错误。

如图10所示,正确率达到93.33%,说明BP神经网络对数据集分类是可行的。

 

4.最近邻分类器

这里采用了K均值算法对数据集iris.txt进行分类。

1)K-Means算法描述

2)SAA类:

包装了KMeans聚类、聚类结果输出、正确率统计等

3)

工作流程:

4)部分代码:

✓聚类部分代码:

✓修改聚类中心的代码:

5)统计正确率:

(因为初始的聚类中心是随机选取的,所以每次运行的结果不一样):

图11

如图11所示,用K均值进行分类的正确率达到90.67%。

5.BP神经网络与最近邻分类器的性能对比

这里的BP神经网络,隐层的传递函数采用tan-sigmoid,输出层采用线性传递函数,网络训练采用Levenberg-Marquardt算法trainlm,隐层节点20,最小均方误差1e-8,最小梯度1e-20。

最近邻分类器随机选取初始聚类中心,最终聚成三类,并对正确率进行统计。

(因为结果只是聚成了三类,并不知道这三类究竟分别是哪一类,可以假设第一类为Iris-setosa,第二类为Iris-versicolor,第三类为Iris-virginica或者第一类为Iris-versicolor,第二类为Iris-setosa,第三类为Iris-virginica等,一共六种可能,选取其中正确率最高的作为最终结果)。

将iris.txt数据分成两部分(等间距的方式抽取数据),一部分用于训练,一部分用于测试。

对测试数据集测试五次,得到的正确率如表1所示:

1

2

3

4

5

BP神经网络

0.9467

0.9067

0.8800

0.9333

最近邻分类器

0.906667

0.513333

0.826667

0.813333

0.913333

表1

观察两组数据可以看出,BP神经网络的性能比最近邻分类器好。

最近邻分类器中的第二次正确率仅为51.3333%,可见它的分类效果受初始点的选取影响很大,如果初始点选的不好,对整个分类器的性能有很大的影响。

体会:

通过本章内容的学习,我学会了使用MATLAB编写简单一些小程序,对BP神经网络有了更深入的了解,深入了解了BP神经网络的工作原理,通过做实验对影响BP神经网络性能的参数有了更深入的理解。

通过对BP神经网络、最近邻分类器的性能比较,知道了他们之间的差异和各自的优缺点。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 简洁抽象

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1