BP神经网络课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数值分析》与《数学实验》专业实训
报告书
题目基于BP神经网络预测方法的预测
模型
一、问题描述
建立基于BP神经网络的信号回归模型,来预测某一组数据。
二、基本要求
1.熟悉掌握神经网络知识;
2.学习多层感知器神经网络的设计方法和Matlab实现;
3.学习神经网络的典型结构;
4.了解BP算法基本思想,设计BP神经网络架构;
5.谈谈实验体会与收获。
三、数据结构
BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。
BP神经网络算法: 神经网络由神经元和权重构成,神经元即为:输入节点,输出节点和隐层结点三部分;权重是各个神经元相互连接的强度。神经网络通过训练,从样本中学习知识,并且将知识以数值的形式存储于连接权中。神经网络的分类过程分成两部分,首先学习网络的权重,利用一些已知的数据训练网络得到该类数据模型的权重;接着根据现有的网络结构和权重等参数得到未知样本的类别。BP算法被称作反向传播算法,主要思想是从前向后(正向)逐层传播信
息;从后向前(反向)逐层传播输出层的误差,间接算出隐层误差。
四、实验内容
人工神经网络是用来模拟人脑结构及智能特点的一个前沿研究领域,它的一个重要特点是通过网络学习达到其输出与期望输出相符的结果,具有很强的自学习、自适应、鲁棒性、容错性及存储记忆的能力.人工神经网络系统评价方法以其超凡的处理复杂非线性问题的能力独树一帜,这种评价方法忠实于客观实际,不带任何人为干预的成分,是一种较好的动态评
价方法. 近年来,人工神经网络的研究和应用受到了国内外的极大重视. 在人工神经网络中有多种模型,其中BP 神经网络模型最成熟,其应用也最为广泛.
BP 神经网络是一种具有两层或两层以上的阶层型神经网络,层间神经元实现全连接,即下层的每个神经元与上层的每个神经元都实现权连接,而层内各神经元间无连接. 典型的BP 网络是三层前馈阶层网络,即:输入层、隐含层和输出层.
源程序:
%======原始数据输入========
p=[2845 2833 4488;2833 4488 4554;4488 4554 2928;4554 2928 3497;2928 3497 2261;...
3497 2261 6921;2261 6921 1391;6921 1391 3580;1391 3580 4451;3580 4451 2636;...
4451 2636 3471;2636 3471 3854;3471 3854 3556;3854 3556 2659;3556 2659 4335;...
2659 4335 2882;4335 2882 4084;4335 2882 1999;2882 1999 2889;1999 2889 2175;...
2889 2175 2510;2175 2510 3409;2510 3409 3729;3409 3729 3489;3729 3489 3172;...
3489 3172 4568;3172 4568 4015;]';
%===========期望输出=======
t=[4554 2928 3497 2261 6921 1391 3580 4451 2636 3471 3854 3556 2659 ... 4335 2882 4084 1999 2889 2175 2510 3409 3729 3489 3172 4568 4015 ... 3666];
ptest=[2845 2833 4488;2833 4488 4554;4488 4554 2928;4554 2928 3497;2928
3497 2261;...
3497 2261 6921;2261 6921 1391;6921 1391 3580;1391 3580 4451;3580 4451 2636;...
4451 2636 3471;2636 3471 3854;3471 3854 3556;3854 3556 2659;3556 2659 4335;...
2659 4335 2882;4335 2882 4084;4335 2882 1999;2882 1999 2889;1999 2889 2175;...
2889 2175 2510;2175 2510 3409;2510 3409 3729;3409 3729 3489;3729 3489 3172;...
3489 3172 4568;3172 4568 4015;4568 4015 3666]';
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %将数据归一化
NodeNum1 =20; % 隐层第一层节点数
NodeNum2=40; % 隐层第二层节点数
TypeNum = 1; % 输出维数
TF1 = 'tansig';
TF2 = 'tansig';
TF3 = 'tansig';
net=newff(minmax(pn),[NodeNum1,NodeNum2,TypeNum],{TF1 TF2 TF3},'traingdx');
%网络创建traingdm
net.trainParam.show=50;
net.trainParam.epochs=50000; %训练次数设置
net.trainParam.goal=1e-5; %训练所要达到的精度
net.trainParam.lr=0.01; %学习速率
net=train(net,pn,tn);
p2n=tramnmx(ptest,minp,maxp);%测试数据的归一化
an=sim(net,p2n);
[a]=postmnmx(an,mint,maxt) %数据的反归一化,即最终想得到的预测结果
plot(1:length(t),t,'o',1:length(t)+1,a,'+');
title('o表示预测值--- *表示实际值')
grid on
m=length(a); %向量a的长度
t1=[t,a(m)];
error=t1-a; %误差向量