BP神经网络matlab代码 (1)

合集下载

基于遗传算法的BP神经网络MATLAB代码

基于遗传算法的BP神经网络MATLAB代码

基于遗传算法的BP神经网络MATLAB代码以下是基于遗传算法的BP神经网络的MATLAB代码,包括网络初始化、适应度计算、交叉运算、突变操作和迭代训练等。

1.网络初始化:```matlabfunction net = initialize_network(input_size, hidden_size, output_size)net.input_size = input_size;net.hidden_size = hidden_size;net.output_size = output_size;net.hidden_weights = rand(hidden_size, input_size);net.output_weights = rand(output_size, hidden_size);net.hidden_biases = rand(hidden_size, 1);net.output_biases = rand(output_size, 1);end```2.适应度计算:```matlabfunction fitness = calculate_fitness(net, data, labels)output = forward_propagation(net, data);fitness = sum(sum(abs(output - labels)));end```3.前向传播:```matlabfunction output = forward_propagation(net, data)hidden_input = net.hidden_weights * data + net.hidden_biases;hidden_output = sigmoid(hidden_input);output_input = net.output_weights * hidden_output +net.output_biases;output = sigmoid(output_input);endfunction result = sigmoid(x)result = 1 ./ (1 + exp(-x));end```4.交叉运算:```matlabfunction offspring = crossover(parent1, parent2)point = randi([1 numel(parent1)]);offspring = [parent1(1:point) parent2((point + 1):end)]; end```5.突变操作:```matlabfunction mutated = mutation(individual, mutation_rate) for i = 1:numel(individual)if rand < mutation_ratemutated(i) = rand;elsemutated(i) = individual(i);endendend```6.迭代训练:```matlabfunction [best_individual, best_fitness] =train_network(data, labels, population_size, generations, mutation_rate)input_size = size(data, 1);hidden_size = round((input_size + size(labels, 1)) / 2);output_size = size(labels, 1);population = cell(population_size, 1);for i = 1:population_sizepopulation{i} = initialize_network(input_size, hidden_size, output_size);endbest_individual = population{1};best_fitness = calculate_fitness(best_individual, data, labels);for i = 1:generationsfor j = 1:population_sizefitness = calculate_fitness(population{j}, data, labels);if fitness < best_fitnessbest_individual = population{j};best_fitness = fitness;endendselected = selection(population, data, labels);for j = 1:population_sizeparent1 = selected{randi([1 numel(selected)])};parent2 = selected{randi([1 numel(selected)])};offspring = crossover(parent1, parent2);mutated_offspring = mutation(offspring, mutation_rate);population{j} = mutated_offspring;endendendfunction selected = selection(population, data, labels) fitnesses = zeros(length(population), 1);for i = 1:length(population)fitnesses(i) = calculate_fitness(population{i}, data, labels);end[~, indices] = sort(fitnesses);selected = population(indices(1:floor(length(population) / 2)));end```这是一个基于遗传算法的简化版BP神经网络的MATLAB代码,使用该代码可以初始化神经网络并进行迭代训练,以获得最佳适应度的网络参数。

MATLAB程序代码--BP神经网络的设计实例

MATLAB程序代码--BP神经网络的设计实例

MATLAB程序代码--BP神经网络的设计实例例1 采用动量梯度下降算法训练 BP 网络。

训练样本定义如下:输入矢量为p =[-1 -2 3 1-1 1 5 -3]目标矢量为t = [-1 -1 1 1]解:本例的 MATLAB 程序如下:close allclearecho onclc% NEWFF——生成一个新的前向神经网络% TRAIN——对 BP 神经网络进行训练% SIM——对 BP 神经网络进行仿真pause% 敲任意键开始clc% 定义训练样本% P 为输入矢量P=[-1, -2,3,1;-1,1,5, -3];% T 为目标矢量T=[-1, -1, 1, 1];pause;clc% 创建一个新的前向神经网络net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingd m')% 当前输入层权值和阈值inputWeights=net.IW{1,1}inputbias=net.b{1}% 当前网络层权值和阈值layerWeights=net.LW{2,1} layerbias=net.b{2}pauseclc% 设置训练参数net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9;net.trainParam.epochs = 1000;net.trainParam.goal = 1e-3; pauseclc% 调用 TRAINGDM 算法训练 BP 网络[net,tr]=train(net,P,T);pauseclc% 对 BP 网络进行仿真A = sim(net,P)% 计算仿真误差E = T - AMSE=mse(E)pauseclcecho off例2 采用xx正则化算法提高 BP 网络的推广能力。

MATLAB程序代码 bp神经网络通用代码

MATLAB程序代码 bp神经网络通用代码

实用标准文案MATLAB程序代码--bp神经网络通用代码matlab通用神经网络代码学习了一段时间的神经网络,总结了一些经验,在这愿意和大家分享一下,希望对大家有帮助,也希望大家可以把其他神经网络的通用代码在这一起分享感应器神经网络、线性网络、BP神经网络、径向基函数网络%通用感应器神经网络。

P=[-0.5 -0.5 0.3 -0.1 -40;-0.5 0.5 -0.5 1 50];%输入向量T=[1 1 0 0 1];%期望输出plotpv(P,T);%描绘输入点图像net=newp([-40 1;-1 50],1);%生成网络,其中参数分别为输入向量的范围和神经元感应器数量hold onlinehandle=plotpc(net.iw{1},net.b{1});net.adaptparam.passes=3;for a=1:25%训练次数[net,Y,E]=adapt(net,P,T);linehandle=plotpc(net.iw{1},net.b{1},linehandle);drawnow;end%通用newlin程序%通用线性网络进行预测time=0:0.025:5;T=sin(time*4*pi);Q=length(T);P=zeros(5,Q);%P中存储信号T的前5(可变,根据需要而定)次值,作为网络输入。

精彩文档.实用标准文案P(1,2:Q)=T(1,1:(Q-1));P(2,3:Q)=T(1,1:(Q-2));P(3,4:Q)=T(1,1:(Q-3));P(4,5:Q)=T(1,1:(Q-4));P(5,6:Q)=T(1,1:(Q-5));plot(time,T)%绘制信号T曲线xlabel('时间');ylabel('目标信号');title('待预测信号');net=newlind(P,T);%根据输入和期望输出直接生成线性网络a=sim(net,P);%网络测试figure(2)plot(time,a,time,T,'+')xlabel('时间');ylabel('输出-目标+');title('输出信号和目标信号');e=T-a;figure(3)plot(time,e)hold onplot([min(time) max(time)],[0 0],'r:')%可用plot(x,zeros(size(x)),'r:')代替hold offxlabel('时间');ylabel('误差');精彩文档.实用标准文案title('误差信号');%通用BP神经网络P=[-1 -1 2 2;0 5 0 5];t=[-1 -1 1 1];net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingd');%输入参数依次为:'样本P范围',[各层神经元数目],{各层传递函数},'训练函数'%训练函数traingd--梯度下降法,有7个训练参数.%训练函数traingdm--有动量的梯度下降法,附加1个训练参数mc(动量因子,缺省为0.9)%训练函数traingda--有自适应lr的梯度下降法,附加3个训练参数:lr_inc(学习率增长比,缺省为1.05;% lr_dec(学习率下降比,缺省为0.7);max_perf_inc(表现函数增加最大比,缺省为1.04)%训练函数traingdx--有动量的梯度下降法中赋以自适应lr的方法,附加traingdm和traingda的4个附加参数%训练函数trainrp--弹性梯度下降法,可以消除输入数值很大或很小时的误差,附加4个训练参数:% delt_inc(权值变化增加量,缺省为1.2);delt_dec(权值变化减小量,缺省为0.5);% delta0(初始权值变化,缺省为0.07);deltamax(权值变化最大值,缺省为50.0)% 适合大型网络%训练函数traincgf--Fletcher-Reeves共轭梯度法;训练函数traincgp--Polak-Ribiere共轭梯度法;%训练函数traincgb--Powell-Beale共轭梯度法%共轭梯度法占用存储空间小,附加1训练参数searchFcn(一维线性搜索方法,缺省为srchcha);缺少1个训练参数lr %训练函数trainscg--量化共轭梯度法,与其他共轭梯度法相比,节约时间.适合大型网络% 附加2个训练参数:sigma(因为二次求导对权值调整的影响参数,缺省为5.0e-5);% lambda(Hessian阵不确定性调节参数,缺省为5.0e-7)% 缺少1个训练参数:lr精彩文档.实用标准文案%训练函数trainbfg--BFGS拟牛顿回退法,收敛速度快,但需要更多内存,与共轭梯度法训练参数相同,适合小网络%训练函数trainoss--一步正割的BP训练法,解决了BFGS消耗内存的问题,与共轭梯度法训练参数相同%训练函数trainlm--Levenberg-Marquardt训练法,用于内存充足的中小型网络net=init(net);net.trainparam.epochs=300; %最大训练次数(前缺省为10,自trainrp后,缺省为100)net.trainparam.lr=0.05; %学习率(缺省为0.01)net.trainparam.show=50; %限时训练迭代过程(NaN表示不显示,缺省为25)net.trainparam.goal=1e-5; %训练要求精度(缺省为0)%net.trainparam.max_fail 最大失败次数(缺省为5)%net.trainparam.min_grad 最小梯度要求(前缺省为1e-10,自trainrp后,缺省为1e-6)%net.trainparam.time 最大训练时间(缺省为inf)[net,tr]=train(net,P,t); %网络训练a=sim(net,P) %网络仿真%通用径向基函数网络——%其在逼近能力,分类能力,学习速度方面均优于BP神经网络%在径向基网络中,径向基层的散步常数是spread的选取是关键%spread越大,需要的神经元越少,但精度会相应下降,spread的缺省值为1%可以通过net=newrbe(P,T,spread)生成网络,且误差为0%可以通过net=newrb(P,T,goal,spread)生成网络,神经元由1开始增加,直到达到训练精度或神经元数目最多为止%GRNN网络,迅速生成广义回归神经网络(GRNN)P=[4 5 6];T=[1.5 3.6 6.7];精彩文档.实用标准文案net=newgrnn(P,T);%仿真验证p=4.5;v=sim(net,p)%PNN网络,概率神经网络P=[0 0 ;1 1;0 3;1 4;3 1;4 1;4 3]';Tc=[1 1 2 2 3 3 3];%将期望输出通过ind2vec()转换,并设计、验证网络T=ind2vec(Tc);net=newpnn(P,T);Y=sim(net,P);Yc=vec2ind(Y)%尝试用其他的输入向量验证网络P2=[1 4;0 1;5 2]';Y=sim(net,P2);Yc=vec2ind(Y)%应用newrb()函数构建径向基网络,对一系列数据点进行函数逼近P=-1:0.1:1;T=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609...0.1336 -0.2013 -0.4344 -0.500 -0.3930 -0.1647 -0.0988...0.3072 0.3960 0.3449 0.1816 -0.0312 -0.2189 -0.3201];%绘制训练用样本的数据点plot(P,T,'r*');title('训练样本');精彩文档.实用标准文案xlabel('输入向量P');ylabel('目标向量T');%设计一个径向基函数网络,网络有两层,隐层为径向基神经元,输出层为线性神经元%绘制隐层神经元径向基传递函数的曲线p=-3:.1:3;a=radbas(p);plot(p,a)title('径向基传递函数')xlabel('输入向量p')%隐层神经元的权值、阈值与径向基函数的位置和宽度有关,只要隐层神经元数目、权值、阈值正确,可逼近任意函数%例如a2=radbas(p-1.5);a3=radbas(p+2);a4=a+a2*1.5+a3*0.5;plot(p,a,'b',p,a2,'g',p,a3,'r',p,a4,'m--')title('径向基传递函数权值之和')xlabel('输入p');ylabel('输出a');%应用newrb()函数构建径向基网络的时候,可以预先设定均方差精度eg以及散布常数sceg=0.02;sc=1; %其值的选取与最终网络的效果有很大关系,过小造成过适性,过大造成重叠性net=newrb(P,T,eg,sc);%网络测试精彩文档.实用标准文案plot(P,T,'*')xlabel('输入');X=-1:.01:1;Y=sim(net,X);hold onplot(X,Y);hold offlegend('目标','输出')%应用grnn进行函数逼近P=[1 2 3 4 5 6 7 8];T=[0 1 2 3 2 1 2 1];plot(P,T,'.','markersize',30)axis([0 9 -1 4])title('待逼近函数')xlabel('P')ylabel('T')%网络设计%对于离散数据点,散布常数spread选取比输入向量之间的距离稍小一些spread=0.7;net=newgrnn(P,T,spread);%网络测试A=sim(net,P);hold onoutputline=plot(P,A,'o','markersize',10,'color',[1 0 0]);精彩文档.实用标准文案title('检测网络')xlabel('P')ylabel('T和A')%应用pnn进行变量的分类P=[1 2;2 2;1 1]; %输入向量Tc=[1 2 3]; %P对应的三个期望输出%绘制出输入向量及其相对应的类别plot(P(1,:),P(2,:),'.','markersize',30)for i=1:3text(P(1,i)+0.1,P(2,i),sprintf('class %g',Tc(i)))endaxis([0 3 0 3]);title('三向量及其类别')xlabel('P(1,:)')ylabel('P(2,:)')%网络设计T=ind2vec(Tc);spread=1;net=newgrnn(P,T,speard);%网络测试A=sim(net,P);Ac=vec2ind(A);%绘制输入向量及其相应的网络输出plot(P(1,:),P(2,:),'.','markersize',30)精彩文档.实用标准文案for i=1:3text(P(1,i)+0.1,P(2,i),sprintf('class %g',Ac(i)))endaxis([0 3 0 3]);title('网络测试结果')xlabel('P(1,:)')ylabel('P(2,:)')P=[13, 0, 1.119, 1, 26.3;22, 0, 1.135, 1, 26.3;-15, 0, 0.9017, 1, 20.4;-30, 0, 0.9172, 1, 26.7;24,0,1.238,0.9704,28.2;3,24,1.119,1,26.3;0,52,1.089,1,26.3;0,-73,1.0889,1,26.3;1,28,0.8748,1,2 6.3;-1,-39,1.1168,1,26.7;-2, 0, 1.495, 1, 26.3;0, -1, 1.438, 1, 26.3;4, 1,0.4964,0.9021, 26.3;3, -1, 0.5533, 1.2357, 26.7;-5, 0, 1.7368, 1, 26.7;1, 0, 1.1045, 0.0202,26.3;-2, 0, 1.1168, 1.3764, 26.7;-3, -1, 1.1655, 1.4418,27.5;3, 2, 1.0875, 0.748, 27.5;-3, 0, 1.1068, 2.2092, 26.3;4, 1, 0.9017, 1, 13.7;3, 2, 0.9017, 1, 14.9;-3, 1, 0.9172, 1, 13.7;-2, 0, 1.0198, 1.0809, 16.1;0, 1, 0.9172, 1, 13.7]T=[1, 0, 0, 0, 0 ;1, 0, 0, 0, 0 ;1, 0, 0, 0, 0 ;1, 0, 0, 0, 0 ;1, 0, 0, 0, 0;0, 1, 0, 0, 0;0, 1, 0, 0, 0;0, 1, 0, 0, 0;0, 1, 0, 0, 0;0, 1, 0, 0, 0;0, 0, 1, 0, 0;0, 0, 1, 0, 0;0, 0, 1, 0, 0;0, 0, 1, 0, 0;0, 0, 1, 0, 0;0, 0, 0, 1, 0 ;0, 0, 0, 1, 0 ;0, 0, 0, 1, 0 ;0, 0, 0, 1, 0 ;0, 0, 0, 1, 0 ;0, 0, 0, 0, 1;0, 0, 0, 0, 1;0, 0, 0, 0, 1;0, 0, 0, 0, 1;0, 0, 0, 0, 1 ];%期望输出plotpv(P,T);%描绘输入点图像精彩文档.。

BP神经网络MATLAB代码

BP神经网络MATLAB代码

BP神经网络matlab代码p=[284528334488;283344884554;448845542928;455429283497;29283497 2261;...349722616921;226169211391;692113913580;139135804451;35804451 2636;...445126363471;263634713854;347138543556;385435562659;35562659 4335;...265943352882;433528824084;433528821999;288219992889;19992889 2175;...288921752510;217525103409;251034093729;340937293489;37293489 3172;...348931724568;317245684015;]';%====期望输出=======t=[4554292834972261692113913580445126363471385435562659... 4335288240841999288921752510340937293489317245684015... 3666];ptest=[284528334488;283344884554;448845542928;455429283497;29283497 2261;...349722616921;226169211391;692113913580;139135804451;35804451 2636;...445126363471;263634713854;347138543556;385435562659;35562659 4335;...265943352882;433528824084;433528821999;288219992889;19992889 2175;...288921752510;217525103409;251034093729;340937293489;37293489 3172;...348931724568;317245684015;456840153666]';[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],{TF1TF2 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%结束下面的是我把索%======ԭʼÊý¾ÝÊäÈë========p=[0.0358680.0385570.0220440.0171700.0104820.0120810.0037350.004663;0.0388910.0397780.0181150.0184190.0098570.0105140.0059380.006051;0.0374130.0384490.0185320.0171410.010221 0.0101030.0089230.009008;0.0332140.0371330.0206900.0145240.0111610.0106640.0066470.007862;0.0375960.0379980.0201270.0186020.0104910.0116430.0055090.004373;0.0303130.0340310.018255 0.0163330.0080200.0091640.0066560.004936;0.0366990.0371520.0202510.0154910.0121800.012924 0.0075200.008002;...0.2809400.1993590.1128910.0797500.0619890.0477980.0390930.035339;0.2352230.1675010.095537 0.0674510.0518210.0407670.0356960.028659;0.2258100.1612220.0914630.0637270.0492210.038668 0.0327730.030023;0.2282550.1619520.0921190.0654410.0509320.0381480.0341810.028801;0.230465 0.1639260.0936220.0676940.0514080.0377460.0347800.030020;0.2338510.1675610.0958520.068036 0.0507980.0399780.0350310.029043;0.2359590.1691130.0969030.0679360.0516860.0389350.034297 0.032020;...0.0182320.0140600.0059230.0040330.0007420.0058400.0018000.002859;0.0155060.0211870.008724 0.0067840.0025160.0024680.0042380.001484;0.0109790.0114670.0035370.0045270.0016230.002313 0.0019850.000662;0.0175400.0188050.0032210.0079770.0036650.0057530.0042850.003807;0.008817 0.0126570.0024340.0065130.0011920.0019030.0049040.003188;0.0124950.0161250.0064830.005098 0.0047510.0014300.0042500.004460;0.0081280.0200870.0064080.0102490.0045140.0027180.002576 0.002896;]';%====ÆÚÍûÊä³ö=======t=[000000000000001010101010101001010101010101];ptest=[0.0399850.0401500.0229320.0148890.0102450.0103300.0072850.008245;0.0395970.041301 0.0210420.0172060.0090620.0107090.0043790.007461;0.0347410.0382610.0230350.0185850.009328 0.0099880.0075210.006008;...0.2468790.1764940.1022420.0713890.0571930.0403130.0368370.030813;0.2569540.1800370.101773 0.0723390.0572040.0444510.0373170.033529;0.2809400.1993590.1128910.0797500.0619890.047798 0.0390930.035339;...0.0161200.0141350.0017940.0051930.0023760.0015300.0021690.001995;0.0163150.0207470.006796 0.0059240.0043230.0038880.0059570.002633;0.0024230.0293810.0174550.0108740.0032110.002222 0.0045590.002341;]';[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],{TF1TF2TF3},'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神经网络MATLAB编程代码

BP神经网络MATLAB编程代码

BP神经网络的设计MATLAB编程例1 采用动量梯度下降算法训练 BP 网络。

训练样本定义如下:输入矢量为p =[-1 -2 3 1-1 1 5 -3]目标矢量为 t = [-1 -1 1 1]解:本例的 MATLAB 程序如下:close allclearecho onclc% NEWFF——生成一个新的前向神经网络% TRAIN——对 BP 神经网络进行训练% SIM——对 BP 神经网络进行仿真pause% 敲任意键开始clc% 定义训练样本% P 为输入矢量P=[-1, -2, 3, 1; -1, 1, 5, -3];% T 为目标矢量T=[-1, -1, 1, 1];pause;clc% 创建一个新的前向神经网络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}pauseclc% 设置训练参数net.trainParam.show = 50;net.trainParam.lr = 0.05;net.trainParam.mc = 0.9;net.trainParam.epochs = 1000;net.trainParam.goal = 1e-3;pauseclc% 调用 TRAINGDM 算法训练 BP 网络[net,tr]=train(net,P,T);pauseclc% 对 BP 网络进行仿真A = sim(net,P)% 计算仿真误差E = T - AMSE=mse(E)pauseclcecho off例2 采用贝叶斯正则化算法提高 BP 网络的推广能力。

BP神经网络matlab详细参数

BP神经网络matlab详细参数

BP神经⽹络matlab详细参数基于matlab BP 神经⽹络参数详解(1)⽣成BP ⽹络(,[1 2...],{ 1 2...},,,)net newff PR S S SNl TF TF TFNl BTF BLF PF =PR :由R 维的输⼊样本最⼩最⼤值构成的2R ?维矩阵。

[1 2...]S S SNl :各层的神经元个数。

{ 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 弹性梯度下降法 trainrpFletcher-Reeves 共轭梯度法traincgfPloak-Ribiere 共轭梯度法 traincgp Powell-Beale 共轭梯度法 traincgb 量化共轭梯度法trainscg拟⽜顿算法trainbfg⼀步正割算法trainoss Levenberg-Marquardt trainlmBP⽹络训练参数训练参数参数介绍训练函数net.trainParam.epochs最⼤训练次数(缺省为10)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm net.trainParam.goal训练要求精度(缺省为0)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm net.trainParam.lr学习率(缺省为0.01)traingd、traingdm、traingda、traingdx、trainrp、traincgf、trainscg、trainbfg、trainoss、trainlmnet.trainParam.max_fail最⼤失败次数(缺省为5)traingd、traingdm、traingda、traingdx、trainrp、traincgf、traincgp、traincgb、trainscg、trainbfg、trainoss、trainlm net.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)net.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、trainoss net.trainParam.sigma因为⼆次求导对权值trainscg调整的影响参数(缺省值5.0e-5)/doc/cd3ed4b6f5335a8102d220e4.html mbda trainscgHessian矩阵不确定性调节参数(缺省为5.0e-7)net.trainParam.men_redtrainlm控制计算机内存/速uc度的参量,内存较⼤设为1,否则设为2(缺省为1)net.trainParam.mu trainlmµ的初始值(缺省为0.001)net.trainParam.mu_dec trainlmµ的减⼩率(缺省为0.1)net.trainParam.mu_inc trainlmµ的增长率(缺省为10)net.trainParam.mu_max trainlmµ的最⼤值(缺省为1e10)。

BP神经网络实验详解(MATLAB实现)

BP神经网络实验详解(MATLAB实现)

BP神经网络实验详解(MATLAB实现)BP(Back Propagation)神经网络是一种常用的人工神经网络结构,用于解决分类和回归问题。

在本文中,将详细介绍如何使用MATLAB实现BP神经网络的实验。

首先,需要准备一个数据集来训练和测试BP神经网络。

数据集可以是一个CSV文件,每一行代表一个样本,每一列代表一个特征。

一般来说,数据集应该被分成训练集和测试集,用于训练和测试模型的性能。

在MATLAB中,可以使用`csvread`函数来读取CSV文件,并将数据集划分为输入和输出。

假设数据集的前几列是输入特征,最后一列是输出。

可以使用以下代码来实现:```matlabdata = csvread('dataset.csv');input = data(:, 1:end-1);output = data(:, end);```然后,需要创建一个BP神经网络模型。

可以使用MATLAB的`patternnet`函数来创建一个全连接的神经网络模型。

该函数的输入参数为每个隐藏层的神经元数量。

下面的代码创建了一个具有10个隐藏神经元的单隐藏层BP神经网络:```matlabhidden_neurons = 10;net = patternnet(hidden_neurons);```接下来,需要对BP神经网络进行训练。

可以使用`train`函数来训练模型。

该函数的输入参数包括训练集的输入和输出,以及其他可选参数,如最大训练次数和停止条件。

下面的代码展示了如何使用`train`函数来训练模型:```matlabnet = train(net, input_train, output_train);```训练完成后,可以使用训练好的BP神经网络进行预测。

可以使用`net`模型的`sim`函数来进行预测。

下面的代码展示了如何使用`sim`函数预测测试集的输出:```matlaboutput_pred = sim(net, input_test);```最后,可以使用各种性能指标来评估预测的准确性。

BP神经网络MATLAB实例

BP神经网络MATLAB实例
clc
% NEWFF——生成一个新的前向神经网络
% TRAIN——对 BP 神经网络进行训练
% SIM——对 BP 神经网络进行仿真
pause
% 敲任意键开始
clc
% 定义训练样本
% P 为输入矢量
P=[-1, -2, 3, 1; -1, 1, 5, -3];
inputbias=net.b{1}
% 当前网络层权值和阈值
layerWeights=net.LW{2,1}
layerbias=net.b{2}
pause
clc
% 设置训练参数
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
pause;
clc
echo off
下面给出了网络的某次训练结果,可见,当训练至第 136 步时,训练提前停止,此时的网络误差为 0.0102565。给出了训练后的仿真数据拟合曲线,效果是相当满意的。
[net,tr]=train(net,P,T,[],[],val);
clc
elseif(choice==2)
echo on
clc
% 采用贝叶斯正则化算法 TRAINBR
net.trainFcn='trainbr';
pause
clc
% 对 BP 网络进行仿真
A = sim(net,P)
% 计算仿真误差
E = T - A
MSE=mse(E)
pause
clc
echo off
例2 采用贝叶斯正则化算法提高 BP 网络的推广能力。在本例中,我们采用两种训练方法,即 L-M 优化算法(trainlm)和贝叶斯正则化算法(trainbr),用以训练 BP 网络,使其能够拟合某一附加有白噪声的正弦样本数据。其中,样本数据可以采用如下MATLAB 语句生成:

BP神经网络matlab源程序代码

BP神经网络matlab源程序代码

%======原始数据输入========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); %将数据归一化关于用premnmx语句进行归一化:premnmx语句的语法格式是:[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T) 其中P,T分别为原始输入和输出数据,minp和maxp分别为P中的最小值和最大值。

bp神经网络matlab实例(bp神经网络matlab实例)

bp神经网络matlab实例(bp神经网络matlab实例)

bp神经网络matlab实例(bp神经网络matlab实例)Case 1 training BP network by momentum gradient descent algorithm.Training samples are defined as follows:Input vector asP =[-1 -2 31-1 15 -3]The target vector is t = [-1 -1 1 1]Solution: the MATLAB program of this example is as follows:Close allClearEcho onCLC% NEWFF - generating a new feedforward neural network% TRAIN -- training BP neural network% SIM -- Simulation of BP neural networkPauseStart by hitting any keyCLCPercent defines training samples% P as input vectorP=[-1, -2, 3, 1; -1, 1, 5, -3];% T is the target vectorT=[-1, -1, 1, 1];Pause;CLC% create a new feedforward neural networkNet=newff (minmax (P), [3,1],{'tansig','purelin'},'traingdm')The current input layer weights and thresholds InputWeights=net.IW{1,1}Inputbias=net.b{1}The current network layer weights and thresholdsLayerWeights=net.LW{2,1}Layerbias=net.b{2}PauseCLC% set training parametersNet.trainParam.show = 50;Net.trainParam.lr = 0.05;Net.trainParam.mc = 0.9;Net.trainParam.epochs = 1000;Net.trainParam.goal = 1e-3;PauseCLC% call TRAINGDM algorithm to train BP network [net, tr]=train (net, P, T);PauseCLCSimulation of BP network by%A = sim (net, P)Calculate the simulation errorE = T - AMSE=mse (E)PauseCLCEcho offExample 2 adopts Bayesian regularization algorithm to improve the generalization ability of BP network. In this case, we used two kinds of training methods, namely L-M algorithm (trainlm) and the Bias regularization algorithm (trainbr), is used to train the BP network, so that it can fit attached to a white noise sine sample data. Among them, the sample data can be generated as follows MATLAB statements:Input vector: P = [-1:0.05:1];Target vector: randn ('seed', 78341223);T = sin (2*pi*P) +0.1*randn (size (P));Solution: the MATLAB program of this example is as follows: Close allClearEcho onCLC% NEWFF - generating a new feedforward neural network% TRAIN -- training BP neural network% SIM -- Simulation of BP neural networkPauseStart by hitting any keyCLC% define training sample vector% P as input vectorP = [-1:0.05:1];% T is the target vectorRandn ('seed', 78341223); T = sin (2*pi*P) +0.1*randn (size (P));Draw the sample data pointsPlot (P, T, +);Echo offHold on;Plot (P, sin (2*pi*P), ':');Draw sine curves without noiseEcho onCLCPauseCLC% create a new feedforward neural networkNet=newff (minmax (P), [20,1], {'tansig','purelin'});PauseCLCEcho offCLCDisp ('1. L-M optimization algorithm TRAINLM'); disp ('2. Bayesian regularization algorithm TRAINBR');Choice=input (\ "please select training algorithm (1,2): ');Figure (GCF);If (choice==1)Echo onCLC% using L-M optimization algorithm TRAINLMNet.trainFcn='trainlm';PauseCLC% set training parametersnet.trainparam.epochs = 500;net.trainparam.goal = 1e-6;NET(.NET);%重新初始化暂停中图分类号“(选择= = 2)回声中图分类号%采用贝叶斯正则化算法trainbr trainfcn = 'trainbr”网;暂停中图分类号%设置训练参数net.trainparam.epochs = 500;randn(“种子”,192736547);NET(.NET);%重新初始化暂停中图分类号结束调用相应算法训练BP网络% [净额],列车=(净额,P,T);暂停中图分类号对BP网络进行仿真%a = sim(NET,p);%计算仿真误差e = a;MSE=MSE(e)暂停中图分类号%绘制匹配结果曲线关闭所有;图(p,a,p,t,+,p,p,p(2),“,”;暂停;中图分类号回音通过采用两种不同的训练算法,我们可以得到如图1和图2所示的两种拟合结果。

BP神经网络matlab实例(简单而经典)

BP神经网络matlab实例(简单而经典)

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); %对BP网络进行仿真anew=postmnmx(anewn,mint,maxt); %还原数据y=anew';1、BP网络构建(1)生成BP网络(,[1 2...],{ 1 2...},,,) net newff PR S S SNl TF TF TFNl BTF BLF PFPR:由R维的输入样本最小最大值构成的2R⨯维矩阵。

S S SNl:各层的神经元个数。

[ 1 2...]TF TF TFNl:各层的神经元传递函数。

{ 1 2...}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网络的训练函数BP网络训练参数2、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),[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)举例2、利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。

基于遗传算法的BP神经网络MATLAB代码

基于遗传算法的BP神经网络MATLAB代码

用遗传算法优化BP神经网络的Matlab编程实例(转)由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。

以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。

程序一:GA训练BP权值的主函数function net=GABPNET(XX,YY)%--------------------------------------------------------------------------% GABPNET.m% 使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络%--------------------------------------------------------------------------%数据归一化预处理nntwarn offXX=[1:19;2:20;3:21;4:22]';YY=[1:4];XX=premnmx(XX);YY=premnmx(YY);YY%创建网络net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},'tra inlm');%下面使用遗传算法对网络进行优化P=XX;T=YY;R=size(P,1);S2=size(T,1);S1=25;%隐含层节点数S=R*S1+S1*S2+S1+S2;%遗传算法编码长度aa=ones(S,1)*[-1,1];popu=50;%种群规模save data2 XX YY % 是将 xx,yy 二个变数的数值存入 data2 这个MAT-file,initPpp=initializega(popu,aa,'gabpEval');%初始化种群gen=100;%遗传代数%下面调用gaot工具箱,其中目标函数定义为gabpEval[x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 11],'maxGenTerm',gen,...'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]);%绘收敛曲线图figure(1)plot(trace(:,1),1./trace(:,3),'r-');hold onplot(trace(:,1),1./trace(:,2),'b-');xlabel('Generation');ylabel('Sum-Squared Error');figure(2)plot(trace(:,1),trace(:,3),'r-');hold onplot(trace(:,1),trace(:,2),'b-');xlabel('Generation');ylabel('Fittness');%下面将初步得到的权值矩阵赋给尚未开始训练的BP网络[W1,B1,W2,B2,P,T,A1,A2,SE,val]=gadecod(x);net.LW{2,1}=W1;net.LW{3,2}=W2;net.b{2,1}=B1;net.b{3,1}=B2;XX=P;YY=T;%设置训练参数net.trainParam.show=1;net.trainParam.lr=1;net.trainParam.epochs=50;net.trainParam.goal=0.001;%训练网络net=train(net,XX,YY);程序二:适应值函数function [sol, val] = gabpEval(sol,options)% val - the fittness of this individual% sol - the individual, returned to allow for Lamarckian evolution % options - [current_generation]load data2nntwarn offXX=premnmx(XX);YY=premnmx(YY);P=XX;T=YY;R=size(P,1);S2=size(T,1);S1=25;%隐含层节点数S=R*S1+S1*S2+S1+S2;%遗传算法编码长度for i=1:S,x(i)=sol(i);end;[W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x);程序三:编解码函数function [W1, B1, W2, B2, P, T, A1, A2, SE, val]=gadecod(x)load data2nntwarn offXX=premnmx(XX);YY=premnmx(YY);P=XX;T=YY;R=size(P,1);S2=size(T,1);S1=25;%隐含层节点数S=R*S1+S1*S2+S1+S2;%遗传算法编码长度% 前R*S1个编码为W1for i=1:S1,for k=1:R,W1(i,k)=x(R*(i-1)+k);endend% 接着的S1*S2个编码(即第R*S1个后的编码)为W2for i=1:S2,for k=1:S1,W2(i,k)=x(S1*(i-1)+k+R*S1);endend% 接着的S1个编码(即第R*S1+S1*S2个后的编码)为B1for i=1:S1,B1(i,1)=x((R*S1+S1*S2)+i);end% 接着的S2个编码(即第R*S1+S1*S2+S1个后的编码)为B2for i=1:S2,B2(i,1)=x((R*S1+S1*S2+S1)+i);end% 计算S1与S2层的输出A1=tansig(W1*P,B1);A2=purelin(W2*A1,B2);% 计算误差平方和SE=sumsqr(T-A2);val=1/SE; % 遗传算法的适应值想运行程序,直接在代码窗口输入GABPNET即可。

MATLAB程序代码--bp神经网络应用举例

MATLAB程序代码--bp神经网络应用举例

MATLAB程序代码--bp神经网络应用举例1BP神经网络的设计实例例1采用动量梯度下降算法训练BP网络。

训练样本定义如下:输入矢量为p=[-1-231-115-3]目标矢量为t=[-1-111]解:本例的MATLAB程序如下:close allclearecho onclc%NEWFF——生成一个新的前向神经网络%TRAIN——对BP神经网络进行训练%SIM——对BP神经网络进行仿真pause%敲任意键开始clc%定义训练样本%P为输入矢量P=[-1,-2,3,1;-1,1,5,-3];%T为目标矢量T=[-1,-1,1,1];pause;clc%创建一个新的前向神经网络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}pauseclc%设置训练参数net.trainParam.show=50;%两次显示之间的训练次数,缺省值为25 net.trainParam.lr=0.05;%学习速率net.trainParam.mc=0.9;%动量常数设置,缺省就是0.9net.trainParam.epochs=1000;%训练次数,缺省值为100net.trainParam.goal=1e-3;%网络性能目标,缺省值为0clc%调用TRAINGDM算法训练BP网络[net,tr]=train(net,P,T);pauseclc%对BP网络进行仿真A=sim(net,P)%计算仿真误差E=T-AMSE=mse(E)pauseclcecho off例2采用贝叶斯正则化算法提高BP网络的推广能力。

BP神经网络逼近(matlab程序)

BP神经网络逼近(matlab程序)

BP神经网络逼近y=1/x,MATLAB程序%BP神经网络逼近y=1/x;%----------------定义必要的变量方便调试--------------------clear;clc;q=8; %神经元个数max_epoch=100000; %最大训练次数err_goal=0.01; %期望误差最小值alpha =0.01; %学习率X = 1:0.5:10; %样本D=1./X; %期望值[m,n] = size(X); %m为输入个数,n为样本数量l=1; %单输出wjk = rand(l,q); %隐层到输出层的初始权值vij = rand(q,m); %输入层到隐层的初始权值for epoch=1:max_epoch%-------------------------前向传播求输入--------------------NETj=vij*X; %隐层净输入Yj=1./(1+exp(-NETj)); %计算隐层输出NETk=wjk*Yj; %输出层净输入Ok=1./(1+exp(-NETk));%计算输出层输出e=((D-Ok)*(D-Ok)')/2; %计算误差函数E(epoch)=e;if(e<err_goal)char='达到输出误差要求学习结束'break;end%-------------------反向传播调权值-------------------------------%调整输出层权值deltak=Ok.*(1-Ok).*(D-Ok);wjk=wjk+alpha*deltak*Yj';%调整隐含层权值deltai=Yj.*(1-Yj).*(deltak'*wjk)';vij=vij+alpha*deltai*X';end%-----------------取样本测试---------------------------------Xx = 1:3:66;D1 = 1./Xx; %期望输出[m1,n1] = size(Xx);NETj1=vij*Xx; %隐层净输入Yj1=1./(1+exp(-NETj1)); %计算隐层输出NETk1=wjk*Yj1; %输出层净输入Ok1=1./(1+exp(-NETk1));%计算输出层输出%-----------------------显示与绘图---------------------------------epoch %显示样本集计算次数Ok %显示训练集输出层输出Ok1 %显示测试集输出层输出subplot(2,2,1);plot(X,D,'b-o'); %样本与期望值title('训练集网络样本')subplot(2,2,2);plot(X,Ok,'b-o',X,D,'r-x');%训练集网络输出与期望值title('训练集网络输出与期望值')subplot(2,2,3);plot(1:1:epoch,E,'k*'); %显示误差title('训练集输出误差')subplot(2,2,4);plot(Xx,Ok1,'b-o',Xx,D1,'r-x'); %绘制样本及网络输出title('测试集网络输出与期望值')运行结果当隐层神经元个数q=8时char =达到输出误差要求学习结束epoch =86197Ok =Columns 1 through 100.8717 0.7039 0.5349 0.4121 0.3313 0.2775 0.2398 0.2120 0.1908 0.1741Columns 11 through 190.1608 0.1499 0.1410 0.1337 0.1276 0.1225 0.1183 0.1147 0.1117Ok1 =Columns 1 through 100.8717 0.2398 0.1410 0.1117 0.1013 0.0972 0.0956 0.0950 0.0947 0.0946Columns 11 through 200.0945 0.0945 0.0945 0.0945 0.0945 0.0945 0.0945 0.0945 0.0945 0.0945Columns 21 through 220.0945 0.0945当隐层神经元个数q=2时epoch =100000Ok =Columns 1 through 100.3222 0.3112 0.3007 0.2910 0.2821 0.2741 0.2668 0.2603 0.2546 0.2495Columns 11 through 190.2451 0.2413 0.2379 0.2351 0.2326 0.2305 0.2287 0.2271 0.2258Ok1 =Columns 1 through 100.3222 0.2668 0.2379 0.2258 0.2211 0.2194 0.2187 0.2185 0.2184 0.2184Columns 11 through 200.2184 0.2184 0.2184 0.2184 0.2184 0.2184 0.2184 0.2184 0.2184 0.2184Columns 21 through 220.2184 0.2184结果分析由运行结果和图形可以看出隐层神经元个数q=8时,网络训练86197次就能使误差达到0.01q=2时,网络训练次数达到最大值100000次还没有达到误差允许的范围。

[转载]BP神经网络Matlab实例(1)

[转载]BP神经网络Matlab实例(1)

[转载]BP神经网络Matlab实例(1)% 例1 采用动量梯度下降算法训练 BP 网络。

% 训练样本定义如下:% 输入矢量为% p =[-1 -2 3 1% -1 1 5 -3]% 目标矢量为 t = [-1 -1 1 1]close allclearclc% ---------------------------------------------------------------% NEWFF——生成一个新的前向神经网络,函数格式:% net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) takes,% PR -- R x 2 matrix of min and max values for R input elements% (对于R维输入,PR是一个R x 2 的矩阵,每一行是相应输入的边界值)% Si -- 第i层的维数% TFi -- 第i层的传递函数, default = 'tansig'% BTF -- 反向传播网络的训练函数, default = 'traingdx'% BLF -- 反向传播网络的权值/阈值学习函数, default = 'learngdm'% PF -- 性能函数, default = 'mse'% ---------------------------------------------------------------% TRAIN——对 BP 神经网络进行训练,函数格式:% train(NET,P,T,Pi,Ai,VV,TV),输入参数:% net -- 所建立的网络% P -- 网络的输入% T -- 网络的目标值, default = zeros% Pi -- 初始输入延迟, default = zeros% Ai -- 初始网络层延迟, default = zeros% VV -- 验证向量的结构, default = []% TV -- 测试向量的结构, default = []% 返回值:% net -- 训练之后的网络% TR -- 训练记录(训练次数及每次训练的误差)% Y -- 网络输出% E -- 网络误差% Pf -- 最终输入延迟% Af -- 最终网络层延迟% ---------------------------------------------------------------% SIM——对 BP 神经网络进行仿真,函数格式:% [Y,Pf,Af,E,perf] = sim(net,P,PiAi,T)% 参数与前同。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%======原始数据输入========
p=[284528334488;283344884554;448845542928;455429283497;29283497 2261;...
349722616921;226169211391;692113913580;139135804451;35804451 2636;...
445126363471;263634713854;347138543556;385435562659;35562659 4335;...
265943352882;433528824084;433528821999;288219992889;19992889 2175;...
288921752510;217525103409;251034093729;340937293489;37293489 3172;...
348931724568;317245684015;]';
%期望输出
t=[4554292834972261692113913580445126363471385435562659... 4335288240841999288921752510340937293489317245684015... 3666];
pt=[284528334488;283344884554;448845542928;455429283497;29283497 2261;...
349722616921;226169211391;692113913580;139135804451;35804451 2636;...
445126363471;263634713854;347138543556;385435562659;35562659 4335;...
265943352882;433528824084;433528821999;288219992889;19992889 2175;...
288921752510;217525103409;251034093729;340937293489;37293489 3172;...
348931724568;317245684015;456840153666]';%测试输入数据
tt=[………];%测试输出数据
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);%将数据归一化
NodeNum1=12;%隐层节点
TypeNum=1;%输出节点
TF1='tansig';
TF2='tansig';
net=newff(minmax(pn),[NodeNum1,TypeNum],{TF1
TF2},'traingdx');
inputWeights=net.IW{1,1};%第一层权值输出
inputbias=net.b{1};%第一层偏置
layerWeights=net.LW{2,1};%第二次权值输出
layerbias=net.b{2};%第二层偏置
%构建网络
net.trainParam.show=500;
net.trainParam.epochs=500000;%最长步数
net.trainParam.goal=0.01;%目标误差
net.trainParam.lr=0.3;%学习率
net.trainParam.mc=0.9;%动量
net=train(net,pn,tn);
%网络模拟仿真
a1=sim(net,pn);
figure;%仿真图
plot(1:length(tn),tn,'D',1:length(a1),a1,'S'); title('ѵÁ·ÍøÂç·ÂÕ棺¡ó±íʾԤ²âÖµ---¡õ±íʾʵ¼ÊÖµ'); grid on;
E=tn-a1;%仿真误差
figure;%仿真误差图
plot(1:length(E),E,'-');
title('ѵÁ·Îó²î±ä»¯Í¼');
grid on;
an=sim(net,pt);%测试检验数据仿真
plot(1:length(tt),tt,'o',1:length(an),an,'+'); title('¼ìÑéÍøÂç·ÂÕ棺o±íʾԤ²âÖµ---*±íʾʵ¼ÊÖµ') grid on%增加网格
E1=tt-an;%测试检验数据仿真的误差
figure;误差图
plot(1:length(E1),E1,'-.')
title('¼ìÑéÎó²î±ä»¯Í¼') grid on%网格。

相关文档
最新文档