(完整版)BP神经网络matlab实例(简单而经典).doc
- 格式:doc
- 大小:433.52 KB
- 文档页数:7
求用matlab编BP神经网络预测程序求一用matlab编的程序P=[。
];输入T=[。
];输出% 创建一个新的前向神经网络net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm')% 当前输入层权值和阈值inputWeights=net_1.IW{1,1}inputbias=net_1.b{1}% 当前网络层权值和阈值layerWeights=net_1.LW{2,1}layerbias=net_1.b{2}% 设置训练参数net_1.trainParam.show = 50;net_1.trainParam.lr = 0.05;net_1.trainParam.mc = 0.9;net_1.trainParam.epochs = 10000;net_1.trainParam.goal = 1e-3;% 调用TRAINGDM 算法训练BP 网络[net_1,tr]=train(net_1,P,T);% 对BP 网络进行仿真A = sim(net_1,P);% 计算仿真误差E = T - A;MSE=mse(E)x=[。
]';%测试sim(net_1,x) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%不可能啊我200928对初学神经网络者的小提示第二步:掌握如下算法:2.最小均方误差,这个原理是下面提到的神经网络学习算法的理论核心,入门者要先看《高等数学》(高等教育出版社,同济大学版)第8章的第十节:“最小二乘法”。
3.在第2步的基础上看Hebb学习算法、SOM和K-近邻算法,上述算法都是在最小均方误差基础上的改进算法,参考书籍是《神经网络原理》(机械工业出版社,Simon Haykin著,中英文都有)、《人工神经网络与模拟进化计算》(清华大学出版社,阎平凡,张长水著)、《模式分类》(机械工业出版社,Richard O. Duda等著,中英文都有)、《神经网络设计》(机械工业出版社,Martin T. Hargan等著,中英文都有)。
Matlab训练好的BP神经网络如何保存和读取方法(附实例说明)看到论坛里很多朋友都在提问如何存储和调用已经训练好的神经网络。
本人前几天也遇到了这样的问题,在论坛中看了大家的回复,虽然都提到了关键的两个函数“save”和“load”,但或多或少都简洁了些,让人摸不着头脑(呵呵,当然也可能是本人太菜)。
通过不断调试,大致弄明白这两个函数对神经网络的存储。
下面附上实例给大家做个说明,希望对跟我有一样问题的朋友有所帮助。
如果只是需要在工作目录下保到当前训练好的网络,可以在命令窗口输入:save net %net为已训练好的网络然后在命令窗口输入:load net %net为已保存的网络加载net。
但一般我们都会在加载完后对网络进行进一步的操作,建议都放在M文件中进行保存网络和调用网络的操作如下所示:%% 以函数的形式训练神经网络function shenjingwangluo()P=[-1,-2,3,1;-1,1,5,-3];%P为输入矢量T=[-1,-1,1,1,];%T为目标矢量net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm')%创建一个新的前向神经网络inputWeights=net.IW{1,1}inputbias=net.b{1}%当前输入层权值和阀值layerWeights=net.LW{2,1}layerbias=net.b{2}net.trainParam.show=50;net.trainParam.lr=0.05;net.trainParam.mc=0.9;net.trainParam.epochs=1000;net.trainParam.goal=0.0002;%调用算法训练BP网络[net,tr]=train(net,P,T);%保存训练好的网络在当前工作目录下的aaa 文件中,net为网络名save('aaa', 'net');%也可以采用 格式“save aaa net;”%若要保存到指定目录用 “'save('d:\aaa.mat', 'net');”这样就保存到指定的目录下了%%调用网络,以函数的形式function jiazaiwangluo()%网络加载,注意文件名要加单引号load('-mat','aaa');%从指定目录加载“load('-mat','d:\aaa.mat'); ”P=[3;4]A=sim(net,P)%对网络进行仿真%上面两个函数都已经调试成功,有需要的朋友可以试试看,希望对大家有帮助。
matlab bp预测例子一、引言人工神经网络(Artificial Neural Network,ANN)是一种模拟人脑神经元网络的数学模型,具有自我学习和适应能力。
而BP神经网络(Back Propagation Neural Network)是其中的一种常见类型,它通过反向传播算法来调整网络的权重和阈值,从而实现对样本数据的拟合和预测。
本文将以MATLAB为例,介绍如何使用BP神经网络进行预测。
二、数据准备我们需要准备用于训练和测试的数据。
假设我们要预测某城市的房价,我们可以收集到以下数据:房屋面积、房间数量、楼层高度、建筑年份和房价。
我们将这些数据存储在一个Excel文件中,然后使用MATLAB的数据导入工具将其读入到工作空间中。
三、数据预处理在进行BP神经网络训练之前,我们需要对数据进行预处理。
首先,我们要将数据划分为训练集和测试集,一般可以按照70%的比例划分。
然后,我们需要对数据进行归一化处理,将所有特征值缩放到0-1之间,以避免某个特征对网络的影响过大。
MATLAB提供了相关函数可以进行数据归一化处理。
四、网络建模在进行网络建模之前,我们需要确定网络的结构和参数。
一般来说,输入层的节点数应该等于特征的个数,输出层的节点数应该等于预测的目标个数。
隐藏层的节点数可以根据经验选择,一般不宜过多,以免过拟合。
然后,我们需要选择合适的激活函数和学习率。
在MATLAB中,可以使用“patternnet”函数来创建BP神经网络对象,并设置相应的参数。
五、网络训练在进行网络训练之前,我们需要将数据转换为MATLAB所需的格式。
然后,可以使用“train”函数对网络进行训练。
训练过程中,MATLAB会根据样本数据和预测结果计算误差,并根据误差进行反向传播调整权重和阈值。
训练的次数可以根据需要进行调整,一般情况下,训练次数越多,网络的拟合能力越强,但也容易造成过拟合。
六、网络预测在网络训练完成后,我们可以使用训练好的网络对新的样本进行预测。
基于matlab BP 神经网络参数详解(1)生成BP网络=net newff PR S S SNl TF TF TFNl BTF BLF PF(,[1 2...],{ 1 2...},,,) PR:由R维的输入样本最小最大值构成的2R⨯维矩阵。
S S SNl:各层的神经元个数。
[1 2...]{ 1 2...}TF TF TFNl:各层的神经元传递函数。
BTF:训练用函数的名称。
(2)网络训练=net tr Y E Pf Af train net P T Pi Ai VV TV[,,,,,] (,,,,,,)(3)网络仿真=Y Pf Af E perf sim net P Pi Ai T[,,,,] (,,,,)BP网络的训练函数训练方法训练函数梯度下降法traingd有动量的梯度下降法traingdm自适应lr梯度下降法traingda自适应lr动量梯度下降法traingdx弹性梯度下降法trainrptraincgfFletcher-Reeves共轭梯度法Ploak-Ribiere共轭梯度法traincgpPowell-Beale共轭梯度法traincgb量化共轭梯度法trainscg拟牛顿算法trainbfg一步正割算法trainoss Levenberg-Marquardt trainlmBP网络训练参数训练参数参数介绍训练函数net.trainParam.epochs最大训练次数(缺省为10)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlmnet.trainParam.goal训练要求精度(缺省为0)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlmnet.trainParam.lr学习率(缺省为0.01)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlmnet.trainParam.max_fail最大失败次数(缺省为5)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlmnet.trainParam.min_grad最小梯度要求(缺省为1e-10)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlmnet.trainParam.show显示训练迭代过程(NaN表示不显示,缺省为25)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlmnet.trainParam.time最大训练时间(缺省为inf)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm net.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因为二次求导对权值trainscg调整的影响参数(缺省值5.0e-5)mbdatrainscgHessian矩阵不确定性调节参数(缺省为5.0e-7)net.trainParam.men_redtrainlm控制计算机内存/速uc度的参量,内存较大设为1,否则设为2(缺省为1)net.trainParam.mutrainlmμ的初始值(缺省为0.001)net.trainParam.mu_dectrainlmμ的减小率(缺省为0.1)net.trainParam.mu_inctrainlmμ的增长率(缺省为10)net.trainParam.mu_maxtrainlmμ的最大值(缺省为1e10)。
GA-BP神经网络应用实例之MATLAB程序% gap.xls中存储训练样本的原始输入数据 37组% gat.xls中存储训练样本的原始输出数据 37组% p_test.xls中存储测试样本的原始输入数据 12组% t_test.xls中存储测试样本的原始输出数据 12组% 其中gabpEval.m适应度值计算函数,gadecod.m解码函数%--------------------------------------------------------------------------nntwarn off;% nntwarn函数可以临时关闭神经网络工具箱的警告功能,当代码使用到神经% 网络工具箱的函数时会产生大量的警告而这个函数可以跳过这些警告但% 是,为了保证代码可以在新版本的工具箱下运行,我们不鼓励这么做pc=xlsread('gap.xls');tc=xlsread('gat.xls');p_test=xlsread('p_test.xls');t_test=xlsread('t_test.xls');p=pc';t=tc';p_test=p_test';t_test=t_test';% 归一化处理for i=1:2P(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:))); endfor i=1:4T(i,:)=(t(i,:)-min(t(i,:)))/(max(t(i,:))-min(t(i,:))); endfor i=1:2P_test(i,:)=(p_test(i,:)-min(p_test(i,:)))/(max(p_test(i,:))-min(p_test(i,:)));end%--------------------------------------------------------------------------% 创建BP神经网络,隐含层节点数为12net=newff(minmax(P),[12,4],{'tansig','purelin'},'trainlm'); %-------------------------------------------------------------------------- % 下面使用遗传算法对网络进行优化R=size(P,1);% BP神经网络输入层节点数S2=size(T,1);% BP神经网络输出层节点数S1=12;% 隐含层节点数S=R*S1+S1*S2+S1+S2;% 遗传算法编码长度aa=ones(S,1)*[-1,1];popu=100;% 种群规模initPop=initializega(popu,aa,'gabpEval');% 初始化种群gen=500;% 遗传代数% 下面调用gaot工具箱,其中目标函数定义为gabpEval[x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPop,[1e-6 11],'maxGenTerm',...gen,'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]);%--------------------------------------------------------------------------% 绘收敛曲线图figure;plot(trace(:,1),1./trace(:,3),'r-'); hold on;plot(trace(:,1),1./trace(:,2),'b-'); xlabel('遗传代数');ylabel('平方和误差');figure;plot(trace(:,1),trace(:,3),'r-'); hold on;plot(trace(:,1),trace(:,2),'b-'); xlabel('遗传代数');ylabel('适应度');legend('平均适应度值','最优适应度值'); %-------------------------------------------------------------------------- % 下面将初步得到的权值矩阵赋给尚未开始训练的BP网络[W1,B1,W2,B2,P,T,A1,A2,SE,val]=gadecod(x); net.IW{1,1}=W1;net.LW{2,1}=W2;net.b{1}=B1;net.b{2}=B2;% 设置训练参数net.trainParam.epochs=3000;net.trainParam.goal=1e-6;% 训练网络net=train(net,P,T);w1=net.IW{1,1};w2=net.LW{2,1};b1=net.b{1};b2=net.b{2};% 测试网络性能temp=sim(net,P_test);yuce1=[temp(1,:);temp(2,:),;temp(3,:);temp(4,:)];for i=1:4yuce(i,:)=yuce1(i,:)*(max(t_test(i,:))-min(t_test(i,:)))+min(t_test(i,:));end%--------------------------------------------------------------------------% 测试输出结果之一figure;plot(1:12,yuce(1,:),'bo-');ylabel('切口外径 mm');hold on;plot(1:12,t_test(1,:),'r*-'); legend('测试结果','测试样本');figure;plot(1:12,yuce(1,:)-t_test(1,:),'b-');ylabel('误差 mm');title('测试结果与测试样本误差');figure;plot(1:12,((yuce(1,:)-t_test(1,:))/t_test(1,:))*100,'b*'); ylabel('百分比');title('测试结果与测试样本误差');% 测试输出结果之二figure;plot(1:12,yuce(2,:),'bo-'); ylabel('切口内径 mm');hold on;plot(1:12,t_test(2,:),'r*-'); legend('测试结果','测试样本'); figure;plot(1:12,yuce(2,:)-t_test(2,:),'b-');ylabel('误差 mm');title('测试结果与测试样本误差');figure;plot(1:12,((yuce(2,:)-t_test(2,:))/t_test(2,:))*100,'b*'); ylabel('百分比');title('测试结果与测试样本误差');% 测试输出结果之三figure;plot(1:12,yuce(3,:),'bo-'); ylabel('最大滚切力 N');hold on;plot(1:12,t_test(3,:),'r*-'); legend('测试结果','测试样本'); figure;plot(1:12,yuce(3,:)-t_test(3,:),'b-');ylabel('误差 N');title('测试结果与测试样本误差');figure;plot(1:12,((yuce(3,:)-t_test(3,:))/t_test(3,:))*100,'b*');ylabel('百分比');title('测试结果与测试样本误差');% 测试输出结果之四figure;plot(1:12,yuce(4,:),'bo-'); ylabel('切断时间 s');hold on;plot(1:12,t_test(4,:),'r*-');legend('测试结果','测试样本');figure;plot(1:12,yuce(4,:)-t_test(4,:),'b-');ylabel('误差 s');title('测试结果与测试样本误差');figure;plot(1:12,((yuce(4,:)-t_test(4,:))/t_test(4,:))*100,'b*'); ylabel('百分比');title('测试结果与测试样本误差');%--------------------------------------------------------------------------。
第三章反向传播网络(BP网络)1.概述前面介绍了神经网络的结构和模型,在实际应用中,我们用的最广泛的是反向传播网络(BP网络)。
下面就介绍一下BP网络的结构和应用。
BP网络是采用Widrow-Hoff学习算法和非线性可微转移函数的多层网络。
一个典型的BP网络采用的是梯度下降算法,也就是Widrow-Hoff算法所规定的。
backpropagation就是指的为非线性多层网络计算梯度的方法。
现在有许多基本的优化算法,例如变尺度算法和牛顿算法。
神经网络工具箱提供了许多这样的算法。
这一章我们将讨论使用这些规则和这些算法的优缺点。
一个经过训练的BP网络能够根据输入给出合适的结果,虽然这个输入并没有被训练过。
这个特性使得BP网络很适合采用输入/目标对进行训练,而且并不需要把所有可能的输入/目标对都训练过。
为了提高网络的适用性,神经网络工具箱提供了两个特性--规则化和早期停止。
这两个特性和用途我们将在这一章的后面讨论。
这一章还将讨论网络的预处理和后处理技术以提高网络训练效率。
2.基础网络结构神经网络的结构前一章已详细讨论过,前馈型BP网络的结构结构和它基本相同,这里就不再详细论述了,这里着重说明以下几点:1.常用的前馈型BP网络的转移函数有logsig,tansig,有时也会用到线性函数purelin。
当网络的最后一层采用曲线函数时,输出被限制在一个很小的范围内,如果采用线性函数则输出可为任意值。
以上三个函数是BP网络中最常用到的函数,但是如果需要的话你也可以创建其他可微的转移函数。
2.在BP网络中,转移函数可求导是非常重要的,tansig、logsig和purelin都有对应的导函数dtansig、dlogsig和dpurelin。
为了得到更多转移函数的导函数,你可以带字符"deriv"的转移函数:tansig('deriv')ans = dtansig网络构建和初始化训练前馈网络的第一步是建立网络对象。
MATLAB 实例:BP 神经⽹络⽤于回归任务MATLAB 实例:BP 神经⽹络⽤于回归(⾮线性拟合)任务作者:凯鲁嘎吉 - 博客园问题描述给定多元(多维)数据X ,有真实结果Y ,对这些数据进⾏拟合(回归),得到拟合函数的参数,进⽽得到拟合函数,现在进来⼀些新样本,对这些新样本进⾏预测出相应地Y 值。
通常的最⼩⼆乘法进⾏线性拟合并不适⽤于所有数据,对于⼤多数数据⽽⾔,他们的拟合函数是⾮线性的,⼈为构造拟合函数相当困难,没有⼀定的经验积累很难完美的构造出符合条件的拟合函数。
因此神经⽹络在这⾥被应⽤来做回归(拟合)任务,进⼀步⽤来预测。
神经⽹络是很强⼤的拟合⼯具,虽然数学可解释性差,但拟合效果好,因⽽得到⼴泛应⽤。
BP 神经⽹络是最基础的⽹络结构,输⼊层,隐层,输出层,三层结构。
如下图所⽰。
整体的⽬标函数就是均⽅误差L =||f (X )−Y ||22其中(激活函数可以⾃⾏设定)f (X )=purelin W 2⋅tan sig (W 1⋅X +b 1)+b 2N : 输⼊数据的个数D : 输⼊数据的维度D 1: 隐层节点的个数X : 输⼊数据(D *N )Y : 真实输出(1*N )W 1: 输⼊层到隐层的权值(D 1*D )b 1: 隐层的偏置(D 1*1)W 2: 输⼊层到隐层的权值(1*D 1)b 2: 隐层的偏置(1*1)通过给定训练数据与训练标签来训练⽹络的权值与偏置,进⼀步得到拟合函数f (X )。
这样,来了新数据后,直接将新数据X 代⼊函数f (X ),即可得到预测的结果。
y = tansig(x) = 2/(1+exp(-2*x))-1;y = purelin(x) = x ;()MATLAB程序⽤到的数据为UCI数据库的housing数据:输⼊数据,最后⼀列是真实的输出结果,将数据打乱顺序,95%的作为训练集,剩下的作为测试集。
这⾥隐层节点数为20。
BP_kailugaji.mfunction errorsum=BP_kailugaji(data_load, NodeNum, ratio)% Author:凯鲁嘎吉 https:///kailugaji/% Input:% data_load: 最后⼀列真实输出结果% NodeNum: 隐层节点个数% ratio: 训练集占总体样本的⽐率[Num, ~]=size(data_load);data=data_load(:, 1:end-1);real_label=data_load(:, end);k=rand(1,Num);[~,n]=sort(k);kk=floor(Num*ratio);%找出训练数据和预测数据input_train=data(n(1:kk),:)';output_train=real_label(n(1:kk))';input_test=data(n(kk+1:Num),:)';output_test=real_label(n(kk+1:Num))';%选连样本输⼊输出数据归⼀化[inputn,inputps]=mapminmax(input_train);[outputn,outputps]=mapminmax(output_train);%% BP⽹络训练% %初始化⽹络结构net=newff(inputn, outputn, NodeNum);net.trainParam.epochs=100; % 最⼤迭代次数net.trainParam.lr=0.01; % 步长net.trainParam.goal=1e-5; % 迭代终⽌条件% net.divideFcn = '';%⽹络训练net=train(net,inputn,outputn);W1=net.iw{1, 1};b1=net.b{1};W2=net.lw{2, 1};b2=net.b{2};fun1=yers{1}.transferFcn;fun2=yers{2}.transferFcn;%% BP⽹络预测%预测数据归⼀化inputn_test=mapminmax('apply',input_test,inputps);%⽹络预测输出an=sim(net,inputn_test);%⽹络输出反归⼀化BPoutput=mapminmax('reverse',an,outputps);%% 结果分析figure(1)plot(BPoutput,'-.or')hold onplot(output_test,'-*b');legend('预测输出','期望输出')xlim([1 (Num-kk)]);title('BP⽹络预测输出','fontsize',12)ylabel('函数输出','fontsize',12)xlabel('样本','fontsize',12)saveas(gcf,sprintf('BP⽹络预测输出.jpg'),'bmp');%预测误差error=BPoutput-output_test;errorsum=sum(mse(error));% 保留参数save BP_parameter W1 b1 W2 b2 fun1 fun2 net inputps outputpsdemo.mclear;clc;close alldata_load=dlmread('housing.data');NodeNum=20;ratio=0.95;errorsum=BP_kailugaji(data_load, NodeNum, ratio);fprintf('测试集总体均⽅误差为:%f\n', errorsum);%%% 验证原来的或者预测新的数据num=1; % 验证第num⾏数据load('BP_parameter.mat');data=data_load(:, 1:end-1);real_label=data_load(:, end);X=data(num, :);X=X';Y=real_label(num, :);%% BP⽹络预测%预测数据归⼀化X=mapminmax('apply',X,inputps);%⽹络预测输出Y_pre=sim(net,X);%⽹络输出反归⼀化Y_pre=mapminmax('reverse',Y_pre,outputps);error=Y_pre-Y';errorsum=sum(mse(error));fprintf('第%d⾏数据的均⽅误差为:%f\n', num, errorsum);结果测试集总体均⽅误差为:5.184424第1⾏数据的均⽅误差为:3.258243注意:隐层节点个数,激活函数,迭代终⽌条件等等参数需要根据具体数据进⾏调整。
1. 数据预处理在训练神经网络前一般需要对数据进行预处理,一种重要的预处理手段是归一化处理。
下面简要介绍归一化处理的原理与方法。
(1) 什么是归一化?数据归一化,就是将数据映射到[0,1]或[-1,1]区间或更小的区间,比如(0.1,0.9) 。
(2) 为什么要归一化处理?<1>输入数据的单位不一样,有些数据的范围可能特别大,导致的结果是神经网络收敛慢、训练时间长。
<2>数据范围大的输入在模式分类中的作用可能会偏大,而数据范围小的输入作用就可能会偏小。
<3>由于神经网络输出层的激活函数的值域是有限制的,因此需要将网络训练的目标数据映射到激活函数的值域。
例如神经网络的输出层若采用S形激活函数,由于S形函数的值域限制在(0,1),也就是说神经网络的输出只能限制在(0,1),所以训练数据的输出就要归一化到[0,1]区间。
<4>S形激活函数在(0,1)区间以外区域很平缓,区分度太小。
例如S形函数f(X)在参数a=1时,f(100)与f(5)只相差0.0067。
(3) 归一化算法一种简单而快速的归一化算法是线性转换算法。
线性转换算法常见有两种形式:<1>y = ( x - min )/( max - min )其中min为x的最小值,max为x的最大值,输入向量为x,归一化后的输出向量为y 。
上式将数据归一化到[ 0 , 1 ]区间,当激活函数采用S形函数时(值域为(0,1))时这条式子适用。
<2>y = 2 * ( x - min ) / ( max - min ) - 1这条公式将数据归一化到[ -1 , 1 ] 区间。
当激活函数采用双极S形函数(值域为(-1,1))时这条式子适用。
(4) Matlab数据归一化处理函数Matlab中归一化处理数据可以采用premnmx ,postmnmx ,tramnmx 这3个函数。
<1> premnmx语法:[pn,minp,maxp,tn,mint,maxt] = premnmx(p,t)参数:pn:p矩阵按行归一化后的矩阵minp,maxp:p矩阵每一行的最小值,最大值tn:t矩阵按行归一化后的矩阵mint,maxt:t矩阵每一行的最小值,最大值作用:将矩阵p,t归一化到[-1,1] ,主要用于归一化处理训练数据集。
%清空环境变量clcclear%读取数据num = xlsread('C:\Users\Administrator\Desktop\模型训练matlab\正样本标记.xls',1,'C3:AN52');num1= xlsread('C:\Users\Administrator\Desktop\模型训练matlab\负样本标记.xls',1,'C3:AN52');训练数据输入fu_input=[num1(:,1),num1(:,3),num1(:,5),num1(:,7),num1(:,10),num1(:,12),num1(:,14) ,num1(:,16),num1(:,18),num1(:,20),num1(:,24),num1(:,26),num1(:,33),num1(:,35),num1 (:,37)];zheng_input=[num(:,1),num(:,3),num(:,5),num(:,7),num(:,10),num(:,12),num(:,14),num (:,16),num(:,18),num(:,20),num(:,24),num(:,26),num(:,33),num(:,35),num(:,37)];Input=[fu_input; zheng_input];训练数据输出a1=ones(50,1)*1;a2=ones(50,1)*0;output=[a1;a2];save data1.mat bsave data2.mat aload data1load data2%节点个数inputnum=100;hiddennum=50;outputnum=100;%训练数据和预测数据input_train=Input;output_train=output;input_test=a(:,91:137);output_test=b(:,91:137);%将训练样本输入输出数据归一化[inputn,inputps]=mapminmax(input_train);[outputn,outputps]=mapminmax(output_train);[pn,minp,maxp,tn,mint,maxt]=premnmx(input,output); %将数据归一化NodeNum1 =20; % 隐层第一层节点数NodeNum2=40; % 隐层第二层节点数TypeNum = 1; % 输出维数TF1 = 'tansig';TF2 = 'tansig';TF3 = 'tansig';net=newff(minmax(pn),[NodeNum1,NodeNum2,TypeNum],{TF1 TF2 TF3},'traingdx');%网络创建traingdmnet.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 onm=length(a); %向量a的长度t1=[t,a(m)];error=t1-a; %误差向量figureplot(1:length(error),error,'-.')title('误差变化图')grid on%构建BP神经网络net=newff(inputn,outputn,[20,12],{'tansig','purelin'},'traingdx'); net.trainParam.epochs=1000;net.trainParam.lr=0.01;net.trainParam.goal=0.00000001;%BP神经网络训练net=train(net,inputn,outputn);%测试样本归一化inputn_test=mapminmax('apply',input_test,inputps);%BP神经网络预测an=sim(net,inputn_test);%%网络得到数据反归一化BPoutput=mapminmax('reverse',an,outputps);d=BPoutput>cfigure(1)%plot(d,':og');scatter(1:(137-90),d,'rx');hold on;%plot(output_test,'-*');scatter(1:(137-90),output_test,'o');legend('预测输出','期望输出','fontsize',12);title('BP网络预测输出','fontsize',12);xlabel('样本','fontsize',12);xlabel('优化前输出的误差','fontsize',12);figure(2)error=d-output_test;plot(1:(137-90),error);xlabel('样本','fontsize',12);ylabel('优化前输出的误差','fontsize',12);%save net net inputs outputs-----精心整理,希望对您有所帮助!。
MATLAB下BP神经网络的设计开发BP网络在神经网络工具箱中的仿真本文利用Matlab6.5神经网络工具箱,以一组动态冲击实验数据为例建立网络模型。
实验数据共有13组,将其中对曲线形状有关键性影响的10组数据作为网络的训练数据,另外3组作为测试数据用以验证网络的预测性能。
①BP网络的建立在建立BP神经网络时,首先要根据应用的问题确定网络结构,即选择网络的层数和隐层节点数。
由于本例中实验数据较少,采用最基本的两层网络就可以很好地逼近未知函数了。
隐层节点数的选择在神经网络的应用中一直是一个复杂的问题:隐层节点数过多,将导致网络的预测能力不够,并容易导致网络陷入局部极小值难以跳出;隐层节点数过少,网络训练不出来,或不能识别以前没有的样本,且容错性差。
在设计中,比较实际的做法是通过对不同神经元数的网络进行训练、对比,找出网络效果最好时的隐层节点数。
在本例中,经大量的训练、对比,最终取中间隐层节点数为10。
另一方面,BP隐层传递函数采用正切Sigmoid 函数tansig,可以逼近任意非线性函数;输出层神经元则采用线性函数purelin,可以把输出值释放到任意值。
至此,一个1-10-1的神经网络模型建立完毕。
②BP网络的训练Matlab神经网络工具箱为用户提供了三种可用于BP网络的训练函数,它们是:trainbp、trainbpx和trainlm。
它们用法类似,采用不同的学习规则。
trainlm训练函数使用Levenberg-Marquardt算法,是三种规则中迭代次数最少、训练速度最快的一个,缺点是该算法在每次迭代时的计算量比其他算法大,故需要大量的存储空间,对于参数很大的应用是不实用的,考虑到待处理问题的参数较小,因此采用trainlm训练函数。
目标误差设为0.01,最大训练步数设为10 000。
设定好参数之后开始训练网络,训练结果显示:网络在训练了32次之后达到目标误差0.01,训练停止。
③BP网络的测试由于初始值取随机值,每次训练得到的结果都不相同,经多次训练得到最好的结果,并记录下此时的权值和阈值。
基于MATLABD的BP神经网络一、BP网络模型BP神经网络,也称为多层前馈神经网络,是一种利用BP算法或称“广义 准则”训练的反向传播神经网络,BP由网络由输入层、隐层和输出层组成。
层与层之问采用全互连方式,同一层之间不存在相互连接,隐层可以有一个或多个。
连接权的调整采用的是反向传播(Back Propagation)的学习算法。
BP神经网络的主要思想是把学习的过程分为两个部分,一部分是信息流在输入层和隐含层中得到计算处理并由输出层输出;另一部分则是根据输出和期望输出之间的误差值进行调节网络权重的反向传播。
神经元是神经网络最基本的处理单元,神经元的变换函数采用S型函数,因此输出量是0到1之间的连续量,它可实现从输入到输出的任意的非线性映射。
利用样本集首先对BP网络进行训练,也即对网络的连接权系数进行学习和调整,以使该网络实现给定的输入输出映射关系,这就是BP神经网络的学习。
经过训练的BP网络,对于不是样本集中的输入也能给出合适的输出。
该性质称为泛化(generalization)功能。
标准的BP算法是一种梯度下降学习算法,其权值的修正是沿着误差性能函数梯度的反方向进行的。
在前向计算过程中,输入信息从输入层经隐层逐层计算,并传向输出层,每层神经元的状态只影响下一层神经元的状态。
如输出层不能得到期望的输出,则转入误差反向传播过程,误差信号沿原来的连接通路返回,通过修改各层的神经元的权值,使得网络系统误差最小。
最终网络的实际输出与各自所对应的期望输出逼近。
由于BP神经网络存在样本数据比较复杂、训练中容易陷入局部极值、初始权值随机选取、网络结构难以确定等不足,直接影响到泛化能力的提高,限制了BP 神经网络在实际中的推广和应用。
为此,本文将采用贝叶斯正则优化算法TRAINBR,以此提高它的泛化能力。
二、基于MATLAB神经网络工具箱及其相关函数简介BP神经网络设计时,需要确定网络的拓扑结构(隐层的层数及各层的神经元的数目)及其神经元的变换函数,网络的初始化,误差计算,学习规则及网络训练,训练参数及训练样本的归一化处理等方面的工作。
close allclearecho onclc% NEWFF——生成一个新的前向神经网络% TRAIN——对BP 神经网络进行训练% SIM——对BP 神经网络进行仿真pause% 敲任意键开始clc% 定义训练样本矢量% P 为输入矢量sqrs=[0.0000016420520 0.0000033513140 0.0000051272540 0.0000069694860 0.0000088776310 0.0000139339960 -0.0000594492310 -0.0001080022920 -0.0001476714860 ...0.0000112367340 0.0002021567880 0.0008695337800 -0.0001189929700 -0.0000912336690 0.0002160472130 0.0006358522040 0.0012365884200 0.0049930394010 ]./0.001657904949 ;sqjdcs=[0.0000399039272 0.0000805129702 0.0001218448339 0.0001639173001 0.0002067504102 0.0003172835720 0.0000421189848 0.0000870310694 0.0001350858140 ...0.0001866997652 0.0002423599348 0.0004033628719 0.0000394450224 0.0000830935373 0.0001317612004 0.0001864881262 0.0002486249700 0.0004497441812 ]./0.000533286;sqglmj=[0.0000068430669 0.0000147605347 0.0000240097285 0.0000349372747 0.0000480215187 0.0000954580176 0.0000005804238 0.0000011640375 0.0000017508228 ...0.0000023407605 0.0000029338317 0.0000044301058 0.0000030813582 0.0000071511410 0.0000126615618 0.0000203910217 0.0000318028637 0.0001118629438 ]./0.000034868299 ;s1=[0.0001773503110 0.0003553133430 0.0005338922010 0.0007130899610 0.0008929096590 0.0013452002950 0.0005747667510 0.0012111415700 0.0019195724060 ...0.0027130110200 0.0036077110840 0.0064386221260 0.0005056929850 0.0010189193420 0.0015398201520 0.0020685403470 0.0026052286500 0.0039828224110 ]./0.00275071;%s2=[25.9167875445 24.0718476818 22.2364947192 20.4105777318 18.5939487791 14.0920619223 990.2535888432 1040.4661104131 1096.3830297389 1159.029******* ...% 1229.6925839338 1453.3788619676 164.1136642277 142.4834641073 121.6137611080 101.4436832756 81.9180522413 35.6044841634];glkyl=[1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3];glhyl=[2 4 6 8 10 15 2 4 6 8 10 15 2 4 6 8 10 15 ];P=[sqrs;sqjdcs;sqglmj;s1]; %输入数据矩阵T=[glkyl;glhyl]; %目标数据矩阵echo onclcpauseclc% 创建一个新的前向神经网络net=newff(minmax(P),[20,2],{'tansig','purelin'});pauseclcecho offclcdisp('1. L-M 优化算法TRAINLM'); disp('2. 贝叶斯正则化算法TRAINBR'); choice=input('请选择训练算法(1,2):');figure(gcf);if(choice==1)echo onclc% 采用L-M 优化算法TRAINLMnet.trainFcn='trainlm';pauseclc% 设置训练参数net.trainParam.epochs = 500;net.trainParam.goal = 1e-6;net=init(net);% 重新初始化pauseclcelseif(choice==2)echo onclc% 采用贝叶斯正则化算法TRAINBRnet.trainFcn='trainbr';pauseclc% 设置训练参数net.trainParam.epochs = 500;randn('seed',192736547);net = init(net);% 重新初始化pauseclcendnet.trainParam.epochs = 500; net.trainParam.goal = 1e-6; net.trainFcn='trainoss';% 调用相应算法训练BP 网络[net,tr]=train(net,P,T);pauseclc% 对BP 网络进行仿真A = sim(net,P);% 计算仿真误差E = T - A;MSE=mse(E)pauseclc。
介绍神经网络算法在机械结构优化中的应用的例子(大家要学习的时候只需要把输入输出变量更改为你自己的数据既可以了,如果看完了还有问题的话可以加我微博“极南师兄”给我留言,与大家共同进步)。
把一个结构的8个尺寸参数设计为变量,如上图所示,对应的质量,温差,面积作为输出。
用神经网络拟合变量与输出的数学模型,首相必须要有数据来源,这里我用复合中心设计法则构造设计点,根据规则,八个变量将构造出81个设计点。
然后在ansys workbench中进行81次仿真(先在proe建模并设置变量,将模型导入wokbench中进行相应的设置,那么就会自动的完成81次仿真,将结果导出来exceel文件)Matlab程序如下P=[20 2.5 6 14.9 16.5 6 14.9 16.515 2.5 6 14.9 16.5 6 14.9 16.525 2.5 6 14.9 16.5 6 14.9 16.520 1 6 14.9 16.5 6 14.9 16.520 4 6 14.9 16.5 6 14.9 16.520 2.5 2 14.9 16.5 6 14.9 16.520 2.5 10 14.9 16.5 6 14.9 16.520 2.5 6 10 16.5 6 14.9 16.520 2.5 6 19.8 16.5 6 14.9 16.520 2.5 6 14.9 10 6 14.9 16.520 2.5 6 14.9 23 6 14.9 16.520 2.5 6 14.9 16.5 2 14.9 16.520 2.5 6 14.9 16.5 10 14.9 16.520 2.5 6 14.9 16.5 6 10 16.520 2.5 6 14.9 16.5 6 19.8 16.520 2.5 6 14.9 16.5 6 14.9 1020 2.5 6 14.9 16.5 6 14.9 2317.51238947 1.75371684 4.009911573 12.46214168 13.26610631 4.00991157312.46214168 19.7338936922.48761053 1.75371684 4.009911573 12.46214168 13.26610631 4.00991157312.46214168 13.2661063117.51238947 3.24628316 4.009911573 12.46214168 13.26610631 4.00991157322.48761053 3.24628316 4.009911573 12.46214168 13.26610631 4.00991157317.33785832 13.2661063117.51238947 1.75371684 7.990088427 12.46214168 13.26610631 4.00991157317.33785832 19.7338936922.48761053 1.75371684 7.990088427 12.46214168 13.26610631 4.00991157317.33785832 13.2661063117.51238947 3.24628316 7.990088427 12.46214168 13.26610631 4.00991157312.46214168 19.7338936922.48761053 3.24628316 7.990088427 12.46214168 13.26610631 4.00991157312.46214168 13.2661063117.51238947 1.75371684 4.009911573 17.33785832 13.26610631 4.00991157317.33785832 13.2661063122.48761053 1.75371684 4.009911573 17.33785832 13.26610631 4.00991157317.33785832 19.7338936917.51238947 3.24628316 4.009911573 17.33785832 13.26610631 4.00991157312.46214168 13.2661063122.48761053 3.24628316 4.009911573 17.33785832 13.26610631 4.00991157312.46214168 19.7338936917.51238947 1.75371684 7.990088427 17.33785832 13.26610631 4.00991157312.46214168 13.2661063122.48761053 1.75371684 7.990088427 17.33785832 13.26610631 4.00991157312.46214168 19.7338936917.51238947 3.24628316 7.990088427 17.33785832 13.26610631 4.00991157317.33785832 13.2661063122.48761053 3.24628316 7.990088427 17.33785832 13.26610631 4.00991157317.33785832 19.7338936917.51238947 1.75371684 4.009911573 12.46214168 19.73389369 4.00991157317.33785832 13.2661063122.48761053 1.75371684 4.009911573 12.46214168 19.73389369 4.00991157317.33785832 19.7338936917.51238947 3.24628316 4.009911573 12.46214168 19.73389369 4.00991157312.46214168 13.2661063122.48761053 3.24628316 4.009911573 12.46214168 19.73389369 4.00991157312.46214168 19.7338936917.51238947 1.75371684 7.990088427 12.46214168 19.73389369 4.00991157312.46214168 13.2661063122.48761053 1.75371684 7.990088427 12.46214168 19.73389369 4.00991157312.46214168 19.7338936917.51238947 3.24628316 7.990088427 12.46214168 19.73389369 4.00991157317.33785832 13.2661063122.48761053 3.24628316 7.990088427 12.46214168 19.73389369 4.00991157317.33785832 19.7338936917.51238947 1.75371684 4.009911573 17.33785832 19.73389369 4.00991157322.48761053 1.75371684 4.009911573 17.33785832 19.73389369 4.00991157312.46214168 13.2661063117.51238947 3.24628316 4.009911573 17.33785832 19.73389369 4.00991157317.33785832 19.7338936922.48761053 3.24628316 4.009911573 17.33785832 19.73389369 4.00991157317.33785832 13.2661063117.51238947 1.75371684 7.990088427 17.33785832 19.73389369 4.00991157317.33785832 19.7338936922.48761053 1.75371684 7.990088427 17.33785832 19.73389369 4.00991157317.33785832 13.2661063117.51238947 3.24628316 7.990088427 17.33785832 19.73389369 4.00991157312.46214168 19.7338936922.48761053 3.24628316 7.990088427 17.33785832 19.73389369 4.00991157312.46214168 13.2661063117.51238947 1.75371684 4.009911573 12.46214168 13.26610631 7.99008842717.33785832 13.2661063122.48761053 1.75371684 4.009911573 12.46214168 13.26610631 7.99008842717.33785832 19.7338936917.51238947 3.24628316 4.009911573 12.46214168 13.26610631 7.99008842712.46214168 13.2661063122.48761053 3.24628316 4.009911573 12.46214168 13.26610631 7.99008842712.46214168 19.7338936917.51238947 1.75371684 7.990088427 12.46214168 13.26610631 7.99008842712.46214168 13.2661063122.48761053 1.75371684 7.990088427 12.46214168 13.26610631 7.99008842712.46214168 19.7338936917.51238947 3.24628316 7.990088427 12.46214168 13.26610631 7.99008842717.33785832 13.2661063122.48761053 3.24628316 7.990088427 12.46214168 13.26610631 7.99008842717.33785832 19.7338936917.51238947 1.75371684 4.009911573 17.33785832 13.26610631 7.99008842712.46214168 19.7338936922.48761053 1.75371684 4.009911573 17.33785832 13.26610631 7.99008842712.46214168 13.2661063117.51238947 3.24628316 4.009911573 17.33785832 13.26610631 7.99008842717.33785832 19.7338936922.48761053 3.24628316 4.009911573 17.33785832 13.26610631 7.99008842717.33785832 13.2661063117.51238947 1.75371684 7.990088427 17.33785832 13.26610631 7.99008842717.33785832 19.7338936922.48761053 1.75371684 7.990088427 17.33785832 13.26610631 7.99008842717.33785832 13.2661063117.51238947 3.24628316 7.990088427 17.33785832 13.26610631 7.99008842722.48761053 3.24628316 7.990088427 17.33785832 13.26610631 7.99008842712.46214168 13.2661063117.51238947 1.75371684 4.009911573 12.46214168 19.73389369 7.99008842712.46214168 19.7338936922.48761053 1.75371684 4.009911573 12.46214168 19.73389369 7.99008842712.46214168 13.2661063117.51238947 3.24628316 4.009911573 12.46214168 19.73389369 7.99008842717.33785832 19.7338936922.48761053 3.24628316 4.009911573 12.46214168 19.73389369 7.99008842717.33785832 13.2661063117.51238947 1.75371684 7.990088427 12.46214168 19.73389369 7.99008842717.33785832 19.7338936922.48761053 1.75371684 7.990088427 12.46214168 19.73389369 7.99008842717.33785832 13.2661063117.51238947 3.24628316 7.990088427 12.46214168 19.73389369 7.99008842712.46214168 19.7338936922.48761053 3.24628316 7.990088427 12.46214168 19.73389369 7.99008842712.46214168 13.2661063117.51238947 1.75371684 4.009911573 17.33785832 19.73389369 7.99008842717.33785832 13.2661063122.48761053 1.75371684 4.009911573 17.33785832 19.73389369 7.99008842717.33785832 19.7338936917.51238947 3.24628316 4.009911573 17.33785832 19.73389369 7.99008842712.46214168 13.2661063122.48761053 3.24628316 4.009911573 17.33785832 19.73389369 7.99008842712.46214168 19.7338936917.51238947 1.75371684 7.990088427 17.33785832 19.73389369 7.99008842712.46214168 13.2661063122.48761053 1.75371684 7.990088427 17.33785832 19.73389369 7.99008842712.46214168 19.7338936917.51238947 3.24628316 7.990088427 17.33785832 19.73389369 7.99008842717.33785832 13.2661063122.48761053 3.24628316 7.990088427 17.33785832 19.73389369 7.99008842717.33785832 19.73389369]';%注意因为本人做了81组仿真试验,这里的矩阵后面有转置符号,在神经网络模型中,输入P的是8X81的矩阵(把程序复制过来之后格式没对齐,大家自己调整一下啦),对应的下面的输出T的是3x81的矩阵。
p=p1';t=t1';[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); % 原始数据归一化net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx'); %设置网络,建立相应的BP 网络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);anew=postmnmx(anewn,mint,maxt); %对 BP 网络进行仿真%还原数据y=anew';1、 BP 网络构建(1)生成 BP 网络net newff ( PR,[ S1 S2...SNl],{ TF1 TF 2...TFNl }, BTF , BLF , PF ) PR :由R 维的输入样本最小最大值构成的R 2 维矩阵。
[ S1 S2...SNl] :各层的神经元个数。
{TF 1 TF 2...TFNl } :各层的神经元传递函数。
BTF :训练用函数的名称。
(2)网络训练[ net,tr ,Y, E, Pf , Af ] train (net, P, T , Pi , Ai ,VV , TV )(3)网络仿真[Y, Pf , Af , E, perf ] sim(net, P, Pi , Ai ,T ){'tansig','purelin'},'trainrp'BP 网络的训练函数训练方法梯度下降法有动量的梯度下降法自适应 lr 梯度下降法自适应 lr 动量梯度下降法弹性梯度下降法训练函数traingd traingdm traingda traingdx trainrpFletcher-Reeves 共轭梯度法traincgf Ploak-Ribiere 共轭梯度法traincgpPowell-Beale 共轭梯度法traincgb 量化共轭梯度法trainscg 拟牛顿算法trainbfg 一步正割算法trainoss Levenberg-Marquardt trainlmBP 网络训练参数训练参数net.trainParam.epochsnet.trainParam.goal net.trainParam.lrnet.trainParam.max_fail net.trainParam.min_grad net.trainParam.show net.trainParam.timenet.trainParam.mc net.trainParam.lr_inc 参数介绍最大训练次数(缺省为10)训练要求精度(缺省为0)学习率(缺省为0.01 )最大失败次数(缺省为5)最小梯度要求(缺省为1e-10)显示训练迭代过程( NaN 表示不显示,缺省为 25)最大训练时间(缺省为inf )动量因子(缺省0.9)学习率lr增长比(缺省为1.05)训练函数traingd 、traingdm 、traingda 、traingdx 、 trainrp 、 traincgf 、traincgp 、traincgb 、trainscg、trainbfg 、 trainoss、 trainlmtraingd 、traingdm 、traingda 、traingdx 、 trainrp 、 traincgf 、traincgp 、traincgb 、trainscg、trainbfg 、 trainoss、 trainlmtraingd 、traingdm 、traingda 、traingdx 、 trainrp 、 traincgf 、traincgp 、traincgb 、trainscg、trainbfg 、 trainoss、 trainlmtraingd 、traingdm 、traingda 、traingdx 、 trainrp 、 traincgf 、traincgp 、traincgb 、trainscg、trainbfg 、 trainoss、 trainlmtraingd 、traingdm 、traingda 、traingdx 、 trainrp 、 traincgf 、traincgp 、traincgb 、trainscg、trainbfg 、 trainoss、 trainlmtraingd 、traingdm 、traingda 、traingdx 、 trainrp 、 traincgf 、traincgp 、traincgb 、trainscg、trainbfg 、 trainoss、 trainlmtraingd 、traingdm 、traingda 、traingdx 、 trainrp 、 traincgf 、traincgp 、traincgb 、trainscg、trainbfg 、 trainoss、 trainlmtraingdm 、 traingdx traingda 、traingdxnet.trainParam.lr_dec 学习率 lr 下降比(缺省为 0.7) traingda 、 traingdxnet.trainParam.max_perf_inc 表现函数增加最大比(缺省traingda 、 traingdx为 1.04)net.trainParam.delt_inc 权值变化增加量(缺省为trainrp1.2)net.trainParam.delt_dec 权值变化减小量(缺省为trainrp0.5)net.trainParam.delt0 初始权值变化(缺省为 0.07) trainrpnet.trainParam.deltamax 权值变化最大值(缺省为trainrp50.0)net.trainParam.searchFcn 一维线性搜索方法(缺省为traincgf 、traincgp 、traincgb 、srchcha)trainbfg 、 trainossnet.trainParam.sigma 因为二次求导对权值调整的trainscg影响参数(缺省值 5.0e-5)mbda Hessian 矩阵不确定性调节trainscg参数(缺省为 5.0e-7)net.trainParam.men_reduc 控制计算机内存/ 速度的参trainlm量,内存较大设为1,否则设为 2(缺省为 1)net.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 -1 2 2 4;0 5 0 5 7];T=[-1 -1 1 1 -1];%利用 minmax函数求输入样本范围net = newff(minmax(P),T,[5,1],{'tansig','purelin'},'trainrp');net.trainParam.show=50;%net.trainParam.lr=0.05;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)BP 神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。
举例 2、利用三层样本数据:输入 X 输出 D 输入 X 输出 D 输入 X 输出 D -1.0000 -0.9602 -0.3000 0.1336 0.4000 0.3072 -0.9000 -0.5770 -0.2000 -0.2013 0.5000 0.3960 -0.8000 -0.0729 -0.1000 -0.4344 0.6000 0.3449 -0.7000 0.3771 0 -0.5000 0.7000 0.1816 -0.6000 0.6405 0.1000 -0.3930 0.8000 -0.3120 -0.5000 0.6600 0.2000 -0.1647 0.9000 -0.2189 -0.4000 0.4609 0.3000 -0.0988 1.0000 -0.3201 解:看到期望输出的范围是1,1 ,所以利用双极性Sigmoid 函数作为转移函数。
程序如下:clear;clc;X=-1:0.1:1;D=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609 ...0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -.0988 ...0.3072 0.3960 0.3449 0.1816 -0.312 -0.2189 -0.3201];figure;plot(X,D, '*' ); % 绘制原始数据分布图(附录:1-1 )net = newff([-1 1],[5 1],{ 'tansig' , 'tansig' });net.trainParam.epochs = 1000; % 训练的最大次数net.trainParam.goal = 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}; %输出层各神经元阈值所得结果如下:输入层到中间层的权值:V -9.1669 7.3448 7.3761 4.8966T 3.5409中间层各神经元的阈值: 6.5885 -2.4019 -0.9962 1.5303T 3.2731中间层到输出层的权值:W 0.3427 0.2135 0.2981 -0.8840 1.9134 输出层各神经元的阈值:T -1.5271举例 3、利用三层样本数据:输入 X BP 神经网络来完成非线性函数的逼近任务,输出 D输入X输出 D其中隐层神经元个数为五个。