当前位置:首页 > 代码 > 正文

bp神经网络代码(bp神经网络代码分析matlab)

admin 发布:2022-12-19 08:58 127


本篇文章给大家谈谈bp神经网络代码,以及bp神经网络代码分析matlab对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

求预测一组数据的bp神经网络模型的matlab代码

用matlab求预测一组数据的bp神经网络模型,可以分

1、给定已经数据,作为一个原始序列;

2、设定自回归阶数,一般2~3,太高不一定好;

3、设定预测某一时间段

4、设定预测步数

5、用BP自定义函数进行预测

6、根据预测值,用plot函数绘制预测数据走势图

其主要实现代码如下:

clc

% x为原始序列(行向量)

x=[208.72 205.69 231.5 242.78 235.64 218.41];

%x=[101.4 101.4 101.9 102.4 101.9 102.9];

%x=[140 137 112 125 213 437.43];

t=1:length(x);

% 自回归阶数

lag=3;

%预测某一时间段

t1=t(end)+1:t(end)+5;

%预测步数为fn

fn=length(t1);

[f_out,iinput]=BP(x,lag,fn);

P=vpa(f_out,5);

A=[t1' P'];

disp('预测值')

disp(A)

% 画出预测图

figure(1),plot(t,iinput,'bo-'),hold on

plot(t(end):t1(end),[iinput(end),f_out],'rp-'),grid on

title('BP神经网络预测某地铁线路客流量')

xlabel('月号'),ylabel('客流量(百万)');

运行结果:

求一个4,8,1的bp神经网络模型的matlab代码?

代码如下:直接运行就是了。

P=P=[-1,  -2,    3,    1;       -1,    1,    5,  -3; -2,  3, 4, 6;  1, 2, 3,  4 ];%初始训练值

%  创建一个新的前向神经网络 

net=newff(minmax(P),[8,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 = 1e-3; 

%  调用 TRAINGDM 算法训练 BP 网络 

[net,tr]=train(net,P,T); 

%  对 BP 网络进行仿真 

A = sim(net,P) %最后结果

%  计算仿真误差 

E = T - A 

MSE=mse(E)

BP神经网络预测代码

你这是在做时间序列呢。

你可以去《神经网络之家》nnetinfo----》学习教程二---神经网络在时间序列上的应用

上面有讲解。我把代码摘抄给你

% time series:神经网络在时间序列上的应用

% 本代码出自《神经网络之家》

timeList = 0 :0.01 : 2*pi; %生成时间点

X = sin(timeList); %生成时间序列信号

%利用x(t-5),x(t-4),x(t-3),x(t-2),x(t-1)作为输入预测x(t),将x(t)作为输出数据

inputData = [X(1:end-5);X(2:end-4);X(3:end-3);X(4:end-2);X(5:end-1)];

outputData = X(6:end);

%使用用输入输出数据(inputData、outputData)建立网络,

%隐节点个数设为3.其中隐层、输出层的传递函数分别为tansig和purelin,使用trainlm方法训练。

net = newff(inputData,outputData,3,{'tansig','purelin'},'trainlm');

%设置一些常用参数

net.trainparam.goal = 0.0001; %训练目标:均方误差低于0.0001

net.trainparam.show = 400; %每训练400次展示一次结果

net.trainparam.epochs = 1500; %最大训练次数:15000.

[net,tr] = train(net,inputData,outputData);%调用matlab神经网络工具箱自带的train函数训练网络

simout = sim(net,inputData); %调用matlab神经网络工具箱自带的sim函数得到网络的预测值

figure; %新建画图窗口窗口

t=1:length(simout);

plot(t,outputData,t,simout,'r')%画图,对比原来的输出和网络预测的输出

%------------------附加:抽取数学表达式----------------------------top

%希望脱离matlab的sim函数来使用训练好网络的话,可以抽取出数学的表达式,|

%这样在任何软件中,只需要按表达式计算即可。 |

%============抽取数学表达式==================

%抽取出网络的权值和阈值

w12 = net.iw{1,1}; %第1层(输入层)到第2层(隐层)的权值

b2 = net.b{1}; %第2层(隐层)的阈值

w23 = net.lw{2,1}; %第2层(隐层)到第3层(输出层)的权值

b3 = net.b{2}; %第3层(输出层)的阈值

%由于有归一化,必须先将归一化信息抓取出来

iMax = max(inputData,[],2);

iMin = min(inputData,[],2);

oMax = max(outputData,[],2);

oMin = min(outputData,[],2);

%方法1:归一化---计算输出---反归一化

normInputData=2*(inputData -repmat(iMin,1,size(inputData,2)))./repmat(iMax-iMin,1,size(inputData,2)) -1;

tmp = w23*tansig( w12 *normInputData + repmat(b2,1,size(normInputData,2))) + repmat(b3,1,size(normInputData,2));

myY = (tmp+1).*repmat(oMax-oMin,1,size(outputData,2))./2 + repmat(oMin,1,size(outputData,2));

%方法2:用真正的权值和阈值进行计算

%公式请参考《提取对应原始数据的权重和阈值》

W12 = w12 * 2 ./repmat(iMax' -iMin',size(w12,1),1);

B2 = -w12* (2*iMin ./(iMax - iMin) + 1) + b2;

W23 = w23 .*repmat((oMax -oMin),1,size(w23,2))/2;

B3 = (oMax -oMin) .*b3 /2 + (oMax -oMin)/2 + oMin;

%最终的数学表达式:

myY2 = W23 *tansig( W12 *inputData + repmat(B2,1,size(inputData,2))) + repmat(B3,1,size(inputData,2));

BP神经网络中初始权值和阈值的设定

1、首先需要了解BP神经网络是一种多层前馈网络。

2、以看一下在matlab中BP神经网络的训练函数,有梯度下降法traingd,弹性梯度下降法trainrp,自适应lr梯度下降法traingda等。

3、在matlab中命令行窗口中定义输入P,输出T,·通过“newff(minmax(P),[5,1]构建BP神经网络,“[net,tr]=train(net,P,T);”进行网络训练,“sim(net,P)”得到仿真预测值。

4、在命令行窗口按回车键之后,可以看到出现结果弹窗,最上面的Neural Network下面依次代表的是“输入、隐含层、输出层、输出”,隐含层中有5个神经元。

5、Progress下面的Epoch代表迭代次数,Gradient代表梯度,Vaildation Checks代表有效性检查,最后的绿色对勾代表性能目标达成。

6、最后将实际曲线和预测曲线绘制出来,可以看到使用BP神经网络预测的结果曲线基本和实际输出曲线一致。

matlab BP神经网络预测代码

P=[1;2;3;4;5];%月

P=[P/50];

T=[2;3;4;5;6];%月训练样本

T=[T/50];

threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1];

net=newff(threshold,[15,7],{'tansig','logsig'},'trainlm');

net.trainParam.epochs=2000;

net.trainParam.goal=0.001;

LP.lr=0.1;

net=train(net,P,T);

P_test=[6月]';%6月数据预测7月

P_test=[P_test/50];

y=sim(net,P_test)

y=[y*50]

2输入2输出,bp神经网络MATLAB代码,怎么编写

k=0:1:6000;

w=0.03*k*pi/180;

x=0.4+0.2*cos(w);

z=0.2+0.2*sin(w);

y1=-atan(x/z)+acos(sqrt(1-(x.^2+z.^2-0.07).^2/(0.36*x.^2+0.36*z.^2)));

y2=asin((0.25-x.^2-z.^2)/0.24)-pi;

[input,minI,maxI,output,minO,maxO]=premnmx([x,z]',[y1,y2]');%进行归一化处理

net=newff(minmax(input),[2,10,2],{'tansig','tansig','purelin'},'traingd');

net.trainParam.show=100;

net.trainParam.Lr=0.05;

net.trainParam.epochs=6000;

net.trainParam.goal=1e-4;

net=train(net,input,output);

output=sim(net,input);

postmnmx(output,minO,maxO);

plot(k,y1,k,y2);

%说明:x和z为输入,y1和y2为输出,对输入进行了归一化处理,并将两个输出构成一个矩阵output,相当于输入变成了input,输出变成了output,

bp神经网络代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于bp神经网络代码分析matlab、bp神经网络代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/5609.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载