ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:495.66KB ,
资源ID:8043334      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8043334.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(BP神经网络的构建与使用.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、BP神经网络的构建与使用BP神经网络的构建与使用一、 函数逼近:1. 实验内容:选取为测试函数,其中,。构造独立的训练样本集和检验样本集,实验在不同的网络规模、样本集大小、学习速率等条件下,网络的学习能力、推广能力和性能上的差异。2. 实验过程:用MATLAB构建并使用BP神经网络, 这里网络训练采用Levenberg-Marquardt算法。具体程序:k=0.05;%随机数据的选取精度m=1.0/k;%矩阵的行或列的数据个数X=k:k:1;Y=k:k:1;%输入矩阵2*400p=zeros(2,m*m);for i=1:m, for j=1:m, p(1,(i-1)*m+j)=X(i); p

2、(2,(i-1)*m+j)=Y(j); endend%输出矩阵1*400Z1=zeros(1,m*m);for i=1:m, for j=1:m, Z1(1,(i-1)*m+j)=sin(2*pi*X(i)*sin(2*pi*Y(j); endend%BP神经网络n=10;%隐层神经元数目%建立BP网络结构,选择隐层和输出层神经元传递函数分别为%tansig函数和purelin函数%网络训练采用Levenberg-Marquardt算法trainlmnet=newff(minmax(p),n,1,tansig,purelin,trainlm);%网络训练net.trainParam.epoch

3、s=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);for i=1:m, for j=1:m, ZZ1(i,j)=Z1(1,(i-1)*m+j); ZZ2(i,j)=Z2(1,(i-1)*m+j); endend%期望输出的曲面图subplot(1,2,1)surf(X,Y,ZZ1)title(期望输出);%实际输出的曲面

4、图subplot(1,2,2)surf(X,Y,ZZ2)title(实际输出);3. 实验结果及分析:运行后,我们得到期望输出和实际输出的曲面图(图1),经过比较,原曲面图和非线性函数的曲面图很接近,这说明,经过训练,BP网络对非线性函数的逼近效果相当好。图1下面对网络规模、样本集大小、学习速率等条件进行修改并观察结果,分析这些因素对网络的学习能力、推广能力和性能上的影响。1) 神经元数目n变化n=5(图2)图2n=10(图3)图3比较图2和图3,可以看出,隐层神经元的数目对于网络逼近效果有一定的影响,一般来说,隐层神经元数目越多,则BP网络逼近非线性函数的能力越强,而同时网络训练所用的时间相

5、对来说更长一些。2) 样本集大小40*40(图4)图420*20(图5)图5比较图4和图5,可以看出,样本集的数目对于网络逼近效果有一定的影响,一般来说,样本集的数目越多,网络逼近效果越好。3) 学习速率lr=0.001(图6)图6lr=0.01(图7)图7比较图6和图7,可以看出,学习速率对于网络逼近效果有一定的影响,一般来说,学习速率越小,网络逼近效果越好,但是学习速率过小会造成训练时间过长。4. BP算法的改进拟牛顿算法图8Levenberg-Marquardt算法图9在前馈反向传播网络应用中,对某一特定的问题,很难确定哪种训练算法最好,因为这取决于问题的复杂性、训练样本数、网络权重和阈

6、值个数以及期望误差等许多因素。一般来说,网络具有几百个权值时,采用Levenberg-Marquardt算法收敛速度最快。如果要求正确训练时,该算法的优点更明显。二、 分类1. 实验内容:进行Iris数据分类实验,通过实验选择具有最佳性能的网络结构和训练参数,并与最近邻分类器进行性能对比。2. 实验过程:具体程序: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的矩阵中,每一列为一个样本for

7、i=1:N*K, Q(1,i)=a(i);Q(2,i)=b(i);Q(3,i)=c(i);Q(4,i)=d(i);end%将数据分成两部分,一部分用于训练,一部分用于测试%等间距的方式抽取数据xn_test=zeros(M,N*K/2);xn_train=zeros(M,N*K/2);for i=1:K*N/2, for j=1:M, xn_test(j,i)=Q(j,i*2-1); xn_train(j,i)=Q(j,i*2); endend%训练目标,测试目标,三类,分别是1 0 0,0 1 0,0 0 1dn_test=zeros(K,N*K/2);dn_train=zeros(K,N*

8、K/2);for j=1:K, for i=1:N/2, dn_train(j,(j-1)*N/2+i)=1; dn_test(j,(j-1)*N/2+i)=1; endend%-函数接口赋值-NodeNum = 20; % 隐层节点数 TypeNum = 3; % 输出维数p1 = xn_train; % 训练输入t1 = dn_train; % 训练输出Epochs = 1000; % 训练次数P = xn_test; % 测试输入 T = dn_test; % 真实分类% 设置网络参数%隐层的传递函数采用tan-sigmoid输出层采用线性传递函数TF1 = tansig;TF2 = p

9、urelin;%构造BP神经网络,网络训练采用Levenberg-Marquardt算法trainlmnet = newff(minmax(p1),NodeNum TypeNum,TF1 TF2,trainlm);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

10、(net,P); % 测试 - 输出为预测值X = full(compet(X) % 竞争输出%compet:Competitive transfer function%full:Convert sparse matrix to full matrix% 结果统计Result = sum(abs(X-T) % 正确分类显示为1Percent = sum(Result)/length(Result) % 正确分类率3. 实验结果及分析:图10对75组测试样本进行分类,其中结果1表示分类正确,0表示分类错误。如图10所示,正确率达到93.33%,说明BP神经网络对数据集分类是可行的。4. 最近邻分

11、类器这里采用了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,最

12、小梯度1e-20。最近邻分类器随机选取初始聚类中心,最终聚成三类,并对正确率进行统计。(因为结果只是聚成了三类,并不知道这三类究竟分别是哪一类,可以假设第一类为Iris-setosa,第二类为Iris-versicolor,第三类为Iris-virginica或者第一类为Iris-versicolor,第二类为Iris-setosa,第三类为Iris-virginica等,一共六种可能,选取其中正确率最高的作为最终结果)。将iris.txt数据分成两部分(等间距的方式抽取数据),一部分用于训练,一部分用于测试。对测试数据集测试五次,得到的正确率如表1所示:12345BP神经网络0.94670.

13、90670.88000.88000.9333最近邻分类器0.9066670.5133330.8266670.8133330.913333表1观察两组数据可以看出,BP神经网络的性能比最近邻分类器好。最近邻分类器中的第二次正确率仅为51.3333%,可见它的分类效果受初始点的选取影响很大,如果初始点选的不好,对整个分类器的性能有很大的影响。体会:通过本章内容的学习,我学会了使用MATLAB编写简单一些小程序,对BP神经网络有了更深入的了解,深入了解了BP神经网络的工作原理,通过做实验对影响BP神经网络性能的参数有了更深入的理解。通过对BP神经网络、最近邻分类器的性能比较,知道了他们之间的差异和各自的优缺点。

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

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