BP神经网络matlab实例(简单而经典)_第1页
BP神经网络matlab实例(简单而经典)_第2页
BP神经网络matlab实例(简单而经典)_第3页
BP神经网络matlab实例(简单而经典)_第4页
BP神经网络matlab实例(简单而经典)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

p=p1';t=t1';[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);%原始数据归一化net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx');%设置网络,建立相应的BP网络,minmax(pn)找到pn矩阵的最大最小值net.trainParam.show=2000;%训练网络net.trainParam.lr=0.01;net.trainParam.epochs=100000;net.trainParam.goal=1e-5;[net,tr]=train(net,pn,tn);%调用TRAINGDM算法训练BP网络pnew=pnew1';pnewn=tramnmx(pnew,minp,maxp);anewn=sim(net,pnewn);%对BP网络进行仿真anew=postmnmx(anewn,mint,maxt);%复原数据y=anew';1、BP网络构建〔1〕生成BP网络:由维的输入样本最小最大值构成的维矩阵。:各层的神经元个数。:各层的神经元传递函数。:训练用函数的名称。〔2〕网络训练〔3〕网络仿真{'tansig','purelin'},'trainrp'BP网络的训练函数训练方法训练函数梯度下降法traingd有动量的梯度下降法traingdm自适应lr梯度下降法traingda自适应lr动量梯度下降法traingdx弹性梯度下降法trainrpFletcher-Reeves共轭梯度法traincgfPloak-Ribiere共轭梯度法traincgpPowell-Beale共轭梯度法traincgb量化共轭梯度法trainscg拟牛顿算法trainbfg一步正割算法trainossLevenberg-MarquardttrainlmBP网络训练参数训练参数参数介绍训练函数最大训练次数〔缺省为10〕traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm训练要求精度〔缺省为0〕traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm学习率〔缺省为0.01〕traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm最大失败次数〔缺省为5〕traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm最小梯度要求〔缺省为1e-10〕traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm显示训练迭代过程〔NaN表示不显示,缺省为25〕traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm最大训练时间〔缺省为inf〕traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlmnet.trainParam.mc动量因子〔缺省0.9〕traingdm、traingdxnet.trainParam.lr_inc学习率lr增长比〔缺省为1.05〕traingda、traingdxnet.trainParam.lr_dec学习率lr下降比〔缺省为0.7〕traingda、traingdxnet.trainParam.max_perf_inc表现函数增加最大比〔缺省为1.04〕traingda、traingdxnet.trainParam.delt_inc权值变化增加量〔缺省为1.2〕trainrpnet.trainParam.delt_dec权值变化减小量〔缺省为0.5〕trainrpnet.trainParam.delt0初始权值变化〔缺省为0.07〕trainrpnet.trainParam.deltamax权值变化最大值〔缺省为50.0〕trainrpnet.trainParam.searchFcn一维线性搜索方法〔缺省为srchcha〕traincgf、traincgp、traincgb、trainbfg、trainossnet.trainParam.sigma因为二次求导对权值调整的影响参数〔缺省值5.0e-5〕trainscgnet.trainParam.lambdaHessian矩阵不确定性调节参数〔缺省为5.0e-7〕trainscgnet.trainParam.men_reduc控制计算机内存/速度的参量,内存较大设为1,否那么设为2〔缺省为1〕trainlmnet.trainParam.mu的初始值〔缺省为0.001〕trainlmnet.trainParam.mu_dec的减小率〔缺省为0.1〕trainlmnet.trainParam.mu_inc的增长率〔缺省为10〕trainlmnet.trainParam.mu_max的最大值〔缺省为1e10〕trainlm2、BP网络举例举例1、%traingdclear;clc;P=[-1-1224;05057];T=[-1-111-1];%利用minmax函数求输入样本范围net=newff(minmax(P),[5,1],{'tansig','purelin'},'trainrp');%minmax(P)取P的最大最小值;[5,1]第一次神经元5个,第二层1个;'tansig','purelin'神经网络第一层和第二层的转移函数;'trainrp'网络训练函数。net.trainParam.show=50;%最多显示训练步数net.trainParam.lr=0.05;%学习率〔缺省为0.01〕net.trainParam.epochs=300;%设置训练次数,net.trainParam.goal=1e-5;%设置精确度[net,tr]=train(net,P,T);%训练开始net.iw{1,1}%隐层权值net.b{1}%隐层阈值net.lw{2,1}%输出层权值net.b{2}%输出层阈值sim(net,P)举例2、利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。样本数据:输入X输出D输入X输出D输入X输出D-1.0000-0.9602-0.30000.13360.40000.3072-0.9000-0.5770-0.2000-0.20230.50000.3960-0.8000-0.0729-0.1000-0.43440.60000.3449-0.70000.37710-0.50000.70000.1816-0.60000.64050.1000-0.39300.8000-0.3120-0.50000.66000.2000-0.16470.9000-0.2189-0.40000.46090.3000-0.09881.0000-0.3201解:看到期望输出的范围是,所以利用双极性Sigmoid函数作为转移函数。程序如下:clear;clc;X=-1:0.1:1;D=[-0.9602-0.5770-0.07290.37710.64050.66000.4609...0.1336-0.2023-0.4344-0.5000-0.3930-0.1647-.0988...0.30720.39600.34490.1816-0.312-0.2189-0.3201];figure;plot(X,D,'*');%绘制原始数据分布图〔附录:1-1〕net=newff([-11],[51],{'tansig','tansig'});net.trainParam.epochs=1000;%训练的最大次数=0.005;%全局最小误差net=train(net,X,D);O=sim(net,X);figure;plot(X,D,'*',X,O);%绘制训练后得到的结果和误差曲线〔附录:1-2、1-3〕V=net.iw{1,1};%输入层到中间层权值theta1=net.b{1};%中间层各神经元阈值W=net.lw{2,1};%中间层到输出层权值theta2=net.b{2};%输出层各神经元阈值所得结果如下:输入层到中间层的权值:中间层各神经元的阈值:中间层到输出层的权值:输出层各神经元的阈值:举例3、利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。样本数据:输入X输出D输入X输出D输入X输出D00448211539322621043371解:看到期望输出的范围超出,所以输出层神经元利用线性函数作为转移函数。程序如下:clear;clc;X=[012345678910];D=[01234321234];figure;plot(X,D,'*');%绘制原始数据分布图net=newff([010],[51],{'tansig','purelin'})net.trainParam.epochs=100;net.trainParam.goal=0.005;net=train(net,X,D);O=sim(net,X);figure;plot(X,D,'*',X,O);%绘制训练后得到的结果和误差曲线〔附录:2-2、2-3〕V=net.iw{1,1}%输入层到中间层权值theta1=net.b{1}%中间层各神经元阈值W=net.lw{2,1}%中间层到输出层权值theta2=net.b{2}%输出层各神经元阈值所得结果如下:输入层到中间层的权值:中间层各神经元的阈值:中间层到输出层的权值:输出层各神经元的阈值:问题:以下是上证指数2023年2月2日到3月27日的收盘价格,构建一个三层BP神经网络,利用该组信号的6个过去值预测信号的将来值。日期价格日期价格2023/02/022023.6822023/03/022093.4522023/02/032060.8122023/03/032071.4322023/02/042107.7512023/03/042198.1122023/02/052098.0212023/03/052221.0822023/02/062181.2412023/03/062193.0122023/02/092224.7112023/03/092118.7522023/02/102265.1612023/03/102158.5722023/02/112260.8222023/03/112139.0212023/02/122248.0922023/03/122133.8812023/02/132320.7922023/03/132128.8512023/02/162389.3922023/03/162153.2912023/02/172319.4422023/03/172218.3312023/02/182209.8622023/03/182223.7312023/02/192227.1322023/03/192265.7612023/02/202261.4822023/03/202281.0912023/02/232305.7822023/03/232325.4812023/02/242200.6522023/03/242338.4212023/02/252206.5722023/03/252291.5512023/02/262121.2522023/03/262361.7012023/02/272082.8522023/03/272374.44loaddata3_1.txt;[m,n]=size(data3_1);tsx=data3_1(1:m-1,1);tsx=tsx';ts=data3_1(2:m,1);ts=ts';[TSX,TSXps]=mapminmax(tsx,1,2);[TS,TSps]=mapminmax(ts,1,2);TSX=TSX';figure;plot(ts,'LineWidth',2);title('到杭旅游总人数(1999.01.01-2023.12.31)','FontSize',12);xlabel('统计年份(1990.12.19-2023.08.19)','FontSize',12);ylabel('归一化后的总游客数/万人','FontSize',12);gridon;%生成BP网络、利用minmax函数求输入样本范围net_1=newff(minmax(TS),[10,1],{'tansig','purelin'},'traincgf')%设置训练参数net_1.trainParam.show=50;%显示训练迭代过程〔NaN表示不显示,缺省25〕net_1.trainParam.lr=0.025;%学习率〔缺省0.01〕net_1.trainParam.mc=0.9;%动量因子〔缺省0.9〕net_1.trainParam.epochs=10000;%最大训练次数net_1.trainParam.goal=0.001;%训练要求精度inputWeights=net_1.IW{1,1}%输入层权值inputbias=net_1.b{1}%输入层阈值layerWeights=net_1.LW{2,1}%输出层权值layerbias=net_1.b{2}%输出层阈值TS',TSX%网络训练[net_1,tr]=train(net_1,TS,TSX);另一问题隐层个数及训练次数可以在定义网络时自己设定,图形的话是系统自己生成的.

题目的意思是00得到0,01得到1,10得到1,11得到0。前者为输入,后者为输出.

所以就这样构造:

%输入一共四组,每组两个

p=[0,0;0,1;1,0;1,1];

%输出:

t=[0,1,1,0];

构造神经网络:

net=newff(p',t,{10},{'tansig'},'trainlm');

%上面这句话的意思是建立新的神经网络net,newff(输入,输出,{隐层数量及该层的节点个数},{传输函数名},训练函数);{10}代表单隐层,并且该层节点为10个,如果想显示多隐层,比方双隐层,{10,15}这样就行,传输函数也要相应增加,比方{'tansig','logsig'}节点数和传输函数名可以随意调整,目的当然是让预测结果更精确

%之后,

net.trainParam.goal=0.00001;%设置精确度

net.trainParam.epochs=5000;%设置训练次数,5000次

[net,tr]=train(net,p',t);%训练开始

。。。。。。。。

这样就可以训练了,过几秒后图片matlab会自动生成

最后想测试训练结果的话,比方你想打00进去看它是不是也给0

p=[00];

a=sim(net,p')

。。。sim就是让net去预测结果

epochs:100最大训练次数

goal:0训练目标

max_fail:5最多验证失败次数

mem_reduc:1Factortouseformemory/speedtradeoff

min_grad:1.0000e-010最小训练梯度

mu:1.0000e-003mu初始参数

mu_dec:0.1000mu减少因子

mu_inc:10mu增加因子

mu_max:1.0000e+010mu最大可取

show:25最多显示训练步数

time:Inf最多训练时间,无限制minmax(P_train)得到矩阵P_train的最小和最大值〔找到每行的最小和最大,有多少行就有多少对最小和最大〕;

[17,3]意思是在隐层建立17个神经元,输出层建立一个神经元;

'tansig','logsig'},'traingdm'是神经网络的一些算法;

做BP网络的话,大概要用到

newff,建立BP

init网络初始化

train网络训练

sim仿真

记得还要数据归一化啊追问能给上面的数据给个代码么?谢谢啊答复P_pix=[175.8728234670.3809570960.270238095

149.50752491130.75581480.370238095

155.11044451450.9348177710.46547619

151.5008251950.6270592910.610714286

163.4778272600.367022250.754761905

219.5723116720.3279101970.257142857

176.3567251190.6747687110.351190476

139.76219881851.3236769420.489285714

162.38371911260.7759398580.642857143

175.2430455700.3994452380.742857143

207.9933893980.4711688210.280952381

140.03570971160.8283601390.357142857

139.36462971310.9399802540.48452381

1389045985090.632142857

175.5874268670.3815762960.741666667];

t=[100;110;010;011;001;100;110;010;011;001;100;110;010;011;001];

t_train=t';

P_train=P_pix';

P_min_max=minmax(P_train);

forn1=1:15

P_train(1,n1)=(P_train(1,n1)-P_min_max(1,1))/(P_min_max(1,2)-P_min_max(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论