matlab BP神经网络(贝叶斯正则化算法程序)

合集下载

matlab贝叶斯算法

matlab贝叶斯算法

matlab贝叶斯算法一、引言随着科技的发展,人工智能、数据挖掘等领域的研究日益深入,贝叶斯算法作为一种基于概率推理的方法,在这些领域中得到了广泛的应用。

MATLAB 作为一款强大的数学软件,为贝叶斯算法的实现和应用提供了便利。

本文将介绍贝叶斯算法的原理,以及如何在MATLAB中实现和应用贝叶斯算法。

二、贝叶斯算法的原理1.贝叶斯定理贝叶斯定理是贝叶斯算法的基础,它描述了在已知某条件概率的情况下,求解相关联的逆条件概率。

贝叶斯定理的数学表达式为:P(A|B) = P(B|A) * P(A) / P(B)2.概率论基础贝叶斯算法涉及到的概率论基础包括概率分布、条件概率、独立性等概念。

在实际问题中,我们需要根据已知条件来计算概率分布,从而得出相关联的概率值。

三、MATLAB实现贝叶斯算法的方法1.贝叶斯网络贝叶斯网络是一种基于贝叶斯定理的图形化表示方法,它可以帮助我们构建复杂的问题模型。

在MATLAB中,可以使用Bayes Net Toolbox工具包来创建和计算贝叶斯网络。

2.极大似然估计极大似然估计是一种求解概率模型参数的方法。

在贝叶斯算法中,我们可以通过极大似然估计来优化模型参数,从而提高预测准确性。

在MATLAB中,可以使用统计工具箱中的极大似然估计函数进行计算。

3.朴素贝叶斯分类器朴素贝叶斯分类器是一种基于贝叶斯定理的分类方法,它要求特征之间相互独立。

在MATLAB中,可以使用朴素贝叶斯分类器进行文本分类、故障诊断等任务。

四、实例分析1.故障诊断应用贝叶斯算法在故障诊断领域具有广泛的应用。

通过建立故障诊断模型,可以对设备的故障进行预测和诊断。

例如,在MATLAB中,可以使用朴素贝叶斯分类器对轴承故障数据进行分类。

2.文本分类应用贝叶斯算法在文本分类领域也具有较高的准确率。

通过构建贝叶斯网络模型,可以对文本进行自动分类。

例如,在MATLAB中,可以使用朴素贝叶斯分类器对新闻分类数据进行分类。

基于遗传算法的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代码,使用该代码可以初始化神经网络并进行迭代训练,以获得最佳适应度的网络参数。

标准的BP神经网络算法程序MATLAB

标准的BP神经网络算法程序MATLAB

count=1;
while (count<=maxcount) %结束条件1迭代1000次
c=1;
while (c<=samplenum)
for k=1:outputNums
d(k)=expectlist(c,k); %获得期望输出的向量,d(1:3)表示一个期望向量内 的值
end
break;
end
count=count+1;%训练次数加1
end%第一个while结束
error(maxcount+1)=error(maxcount);
p=1:count;
pp=p/50;
plot(pp,error(p),"-"); %显示误差
deltv(i,j)=alpha*yitay(j)*x(i); %同上deltw
v(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j);
dv(i,j)=deltv(i,j);
end
end
c=c+1;
end%第二个while结束;表示一次BP训练结束
double tmp;
for i=1:inputNums
x(i)=samplelist(c,i); %获得输入的向量(数据),x(1:3)表一个训练向量
字串4
end
%Forward();
for j=1:hideNums
net=0.0;
for i=1:inputNums
net=net+x(i)*v(i,j);
dw=zeros(hideNums,outputNums); %10*3

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示例程序

% BP 神经网络用于模式分类% 使用平台 - Matlab6.5% 作者:陆振波,海军工程大学% 欢迎同行来信交流与合作,更多文章与程序下载请访问我的个人主页% 电子邮件:******************.cn% 个人主页:clcclearclose all%---------------------------------------------------% 产生训练样本与测试样本,每一列为一个样本P1 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];T1 = [repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)];P2 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];T2 = [repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)];%---------------------------------------------------% 归一化[PN1,minp,maxp] = premnmx(P1);PN2 = tramnmx(P2,minp,maxp);%---------------------------------------------------% 设置网络参数NodeNum = 10; % 隐层节点数TypeNum = 3; % 输出维数TF1 = 'tansig';TF2 = 'purelin'; % 判别函数(缺省值)%TF1 = 'tansig';TF2 = 'logsig';%TF1 = 'logsig';TF2 = 'purelin';%TF1 = 'tansig';TF2 = 'tansig';%TF1 = 'logsig';TF2 = 'logsig';%TF1 = 'purelin';TF2 = 'purelin';net = newff(minmax(PN1),[NodeNum TypeNum],{TF1 TF2});%---------------------------------------------------% 指定训练参数% net.trainFcn = 'traingd'; % 梯度下降算法% net.trainFcn = 'traingdm'; % 动量梯度下降算法%% net.trainFcn = 'traingda'; % 变学习率梯度下降算法% net.trainFcn = 'traingdx'; % 变学习率动量梯度下降算法%% (大型网络的首选算法 - 模式识别)% net.trainFcn = 'trainrp'; % RPROP(弹性BP)算法,内存需求最小%% 共轭梯度算法% net.trainFcn = 'traincgf'; % Fletcher-Reeves修正算法% net.trainFcn = 'traincgp'; % Polak-Ribiere修正算法,内存需求比Fletcher-Reeves 修正算法略大% net.trainFcn = 'traincgb'; % Powell-Beal复位算法,内存需求比Polak-Ribiere修正算法略大% (大型网络的首选算法 - 函数拟合,模式识别)% net.trainFcn = 'trainscg'; % Scaled Conjugate Gradient算法,内存需求与Fletcher-Reeves修正算法相同,计算量比上面三种算法都小很多%% net.trainFcn = 'trainbfg'; % Quasi-Newton Algorithms - BFGS Algorithm,计算量和内存需求均比共轭梯度算法大,但收敛比较快% net.trainFcn = 'trainoss'; % One Step Secant Algorithm,计算量和内存需求均比BFGS 算法小,比共轭梯度算法略大%% (中小型网络的首选算法 - 函数拟合,模式识别)net.trainFcn = 'trainlm'; % Levenberg-Marquardt算法,内存需求最大,收敛速度最快%% net.trainFcn = 'trainbr'; % 贝叶斯正则化算法%% 有代表性的五种算法为:'traingdx','trainrp','trainscg','trainoss', 'trainlm' %---------------------%net.trainParam.show = 1; % 训练显示间隔net.trainParam.lr = 0.3; % 学习步长 - traingd,traingdmnet.trainParam.mc = 0.95; % 动量项系数 - traingdm,traingdxnet.trainParam.mem_reduc = 10; % 分块计算Hessian矩阵(仅对Levenberg-Marquardt 算法有效)net.trainParam.epochs = 1000; % 最大训练次数net.trainParam.goal = 1e-8; % 最小均方误差net.trainParam.min_grad = 1e-20; % 最小梯度net.trainParam.time = inf; % 最大训练时间%---------------------------------------------------% 训练与测试net = train(net,PN1,T1); % 训练%---------------------------------------------------% 测试Y1 = sim(net,PN1); % 训练样本实际输出Y2 = sim(net,PN2); % 测试样本实际输出Y1 = full(compet(Y1)); % 竞争输出Y2 = full(compet(Y2));%---------------------------------------------------% 结果统计Result = ~sum(abs(T1-Y1)) % 正确分类显示为1Percent1 = sum(Result)/length(Result) % 训练样本正确分类率Result = ~sum(abs(T2-Y2)) % 正确分类显示为1Percent2 = sum(Result)/length(Result) % 测试样本正确分类率******************************************************************% BP 神经网络用于函数拟合% 使用平台 - Matlab6.5% 作者:陆振波,海军工程大学% 欢迎同行来信交流与合作,更多文章与程序下载请访问我的个人主页% 电子邮件:******************.cn% 个人主页:clcclearclose all%---------------------------------------------------% 产生训练样本与测试样本P1 = 1:2:200; % 训练样本,每一列为一个样本T1 = sin(P1*0.1); % 训练目标P2 = 2:2:200; % 测试样本,每一列为一个样本T2 = sin(P2*0.1); % 测试目标%---------------------------------------------------% 归一化[PN1,minp,maxp,TN1,mint,maxt] = premnmx(P1,T1);PN2 = tramnmx(P2,minp,maxp);TN2 = tramnmx(T2,mint,maxt);%---------------------------------------------------% 设置网络参数NodeNum = 20; % 隐层节点数TypeNum = 1; % 输出维数TF1 = 'tansig';TF2 = 'purelin'; % 判别函数(缺省值)%TF1 = 'tansig';TF2 = 'logsig';%TF1 = 'logsig';TF2 = 'purelin';%TF1 = 'tansig';TF2 = 'tansig';%TF1 = 'logsig';TF2 = 'logsig';%TF1 = 'purelin';TF2 = 'purelin';net = newff(minmax(PN1),[NodeNum TypeNum],{TF1 TF2});%---------------------------------------------------% 指定训练参数% net.trainFcn = 'traingd'; % 梯度下降算法% net.trainFcn = 'traingdm'; % 动量梯度下降算法%% net.trainFcn = 'traingda'; % 变学习率梯度下降算法% net.trainFcn = 'traingdx'; % 变学习率动量梯度下降算法%% (大型网络的首选算法)% net.trainFcn = 'trainrp'; % RPROP(弹性BP)算法,内存需求最小%% 共轭梯度算法% net.trainFcn = 'traincgf'; % Fletcher-Reeves修正算法% net.trainFcn = 'traincgp'; % Polak-Ribiere修正算法,内存需求比Fletcher-Reeves 修正算法略大% net.trainFcn = 'traincgb'; % Powell-Beal复位算法,内存需求比Polak-Ribiere修正算法略大% (大型网络的首选算法)%net.trainFcn = 'trainscg'; % Scaled Conjugate Gradient算法,内存需求与Fletcher-Reeves修正算法相同,计算量比上面三种算法都小很多%% net.trainFcn = 'trainbfg'; % Quasi-Newton Algorithms - BFGS Algorithm,计算量和内存需求均比共轭梯度算法大,但收敛比较快% net.trainFcn = 'trainoss'; % One Step Secant Algorithm,计算量和内存需求均比BFGS 算法小,比共轭梯度算法略大%% (中型网络的首选算法)net.trainFcn = 'trainlm'; % Levenberg-Marquardt算法,内存需求最大,收敛速度最快%% net.trainFcn = 'trainbr'; % 贝叶斯正则化算法%% 有代表性的五种算法为:'traingdx','trainrp','trainscg','trainoss', 'trainlm' %---------------------%net.trainParam.show = 20; % 训练显示间隔net.trainParam.lr = 0.3; % 学习步长 - traingd,traingdmnet.trainParam.mc = 0.95; % 动量项系数 - traingdm,traingdxnet.trainParam.mem_reduc = 1; % 分块计算Hessian矩阵(仅对Levenberg-Marquardt算法有效)net.trainParam.epochs = 1000; % 最大训练次数net.trainParam.goal = 1e-8; % 最小均方误差net.trainParam.min_grad = 1e-20; % 最小梯度net.trainParam.time = inf; % 最大训练时间%---------------------------------------------------% 训练net = train(net,PN1,TN1); % 训练%---------------------------------------------------% 测试YN1 = sim(net,PN1); % 训练样本实际输出YN2 = sim(net,PN2); % 测试样本实际输出MSE1 = mean((TN1-YN1).^2) % 训练均方误差MSE2 = mean((TN2-YN2).^2) % 测试均方误差%---------------------------------------------------% 反归一化Y2 = postmnmx(YN2,mint,maxt);%---------------------------------------------------% 结果作图plot(1:length(T2),T2,'r+:',1:length(Y2),Y2,'bo:')title('+为真实值,o为预测值')。

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中的最小值和最大值。

MATLAB完成BP神经网络

MATLAB完成BP神经网络

%本人完成的MATLAB代码可以直接在MATLAB R2013a上面直接运行。

完成BP神经网络。

%输入节点3 输出节点2 隐层自主定义,最大节点数50.N_Out=2;N_In=3;N_Sample=6;LayerNum=input('请输入中间节点的数目: ');%中间层节点数V=rand(N_In,50); %中间层权值矩阵随机生成W=rand(50,N_Out); %输出层权值矩阵随机生成StudyRate=input('请输入学习率: ');%学习率Accuracy=input('请输入精度控制参数: ');%精度控制参数MaxLoop=input('请输入最大循环次数: '); %最大循环次数n=0;[i,j,k]=deal(0);Out1=zeros(50);Out2=zeros(50);Out1daoshu=zeros(50);Out2daoshu=zeros(50);Tmp=0;Input_num=[0 0 0];%=======================训练样本=======================x=[0.8 0.5 0;0.9 0.7 0.3;1 0.8 0.5;0 0.2 0.3;0.2 0.1 1.3;0.2 0.7 0.8] %输入样本y=[0 1;0 1;0 1;1 1;1 0;1 0] %输出期望error=Accuracy+1;while error>Accuracy&&n<MaxLoop %神经网络训练error=0;for i=1:N_Sample%计算中间层输出向量for k=1:LayerNumTemp=0;for j=1:N_In;Tmp=Tmp+x(i,j)*V(j,k);endOut1(k)=(1+exp(-Tmp)).^(-1);Out1daoshu(k)=daoshu(Tmp);end%计算输出层输出向量for k=1:N_OutTmp=0;for j=1:LayerNumTmp=Tmp+Out1(j)*W(j,k);endOut2(k)=(1+exp(-Tmp)).^(-1);Out2daoshu(k)=daoshu(Tmp);end%计算输出层权值修改量for j=1:N_OutChgO(j)=Out2(j)*(1-Out2(j))*(y(i,j)-Out2(j)); end%计算输出误差for j=1:N_Outerror=error+(y(i,j)-Out2(j))*(y(i,j)-Out2(j)); end%计算中间层权值修改量for j=1:LayerNumTmp=0;for k=1:N_OutTmp=Tmp+W(j,k)*ChgO(k);endChgH(j)=Tmp*Out1(j)*(1-Out1(j));end%修改输出层权值矩阵for j=1:LayerNumfor k=1:N_OutW(j,k)=W(j,k)+StudyRate*Out1daoshu(j)*ChgO(k);endendfor j=1:N_Infor k=1:LayerNumV(j,k)=V(j,k)+StudyRate*x(i,j)*ChgH(k);endendendif (mod(n,10)==0)fprintf('调整后误差:%f \n',error);endn=n+1;endfprintf('总共循环次数:%f \n',n);%调整后中间层权值矩阵fprintf('调整后中间层权值矩阵:\n');for i=1:N_Infor j=1:LayerNumfprintf('%f ',V(i,j));endendfprintf('\n');fprintf('===================================================\n'); %调整后输出层权重矩阵fprintf('调整后输出层权值矩阵:\n');for i=1:LayerNumfor j=1:N_Outfprintf('%f ',W(i,j));endendfprintf('\n');fprintf('何星宏的神经网络训练完成!');while (1)%BP网络使用fprintf('请输入三个数:\n');for i=1:N_InInput_num(N_In)=input('');endfor i=1:LayerNumTmp=0;for j=1:N_InTmp=Tmp+Input_num(j)*V(j,i);endOut1(i)=1+exp(-Tmp);endfor i=1:N_OutTmp=0;for j=1:LayerNumTmp=Tmp+Out1(j)*W(j,i);endOut2(i)=1+exp(-Tmp);endfprintf('结果:\n');for i=1:N_Outfprintf('%f ',Out2(i));endend%=====================================by 何同学。

(完整版)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网络=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{'tansig','purelin'},'trainrp'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),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)举例2、利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。

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

close all
clear
echo on
clc
% 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 on
clc
pause
clc
% 创建一个新的前向神经网络
net=newff(minmax(P),[20,2],{'tansig','purelin'});
pause
clc
echo off
clc
disp('1. L-M 优化算法TRAINLM'); disp('2. 贝叶斯正则化算法TRAINBR'); choice=input('请选择训练算法(1,2):');
figure(gcf);
if(choice==1)
echo on
clc
% 采用L-M 优化算法TRAINLM
net.trainFcn='trainlm';
pause
clc
% 设置训练参数
net.trainParam.epochs = 500;
net.trainParam.goal = 1e-6;
net=init(net);
% 重新初始化
pause
clc
elseif(choice==2)
echo on
clc
% 采用贝叶斯正则化算法TRAINBR
net.trainFcn='trainbr';
pause
clc
% 设置训练参数
net.trainParam.epochs = 500;
randn('seed',192736547);
net = init(net);
% 重新初始化
pause
clc
end
net.trainParam.epochs = 500; net.trainParam.goal = 1e-6; net.trainFcn='trainoss';
% 调用相应算法训练BP 网络[net,tr]=train(net,P,T);
pause
clc
% 对BP 网络进行仿真
A = sim(net,P);
% 计算仿真误差
E = T - A;
MSE=mse(E)
pause
clc。

相关文档
最新文档