matlab中的BP神经网络
%% BP算法function Out=bpnet(p,t,p_test)S1=5; %threshold=[0 pi/2;0 pi/2];%net=newff(threshold,[5,2],{'tansig','purelin'},'trainlm');net=newff(minmax(p),[S1,2],{'tansig','purelin'},'trainlm');%net=newff(P,T,5,{'tansig','purelin'},'trainlm');%新版用法net.trainParam.epochs=1000;net.trainParam.goal=0.00001;net.trainParam.lr=0.01;net.trainParam.showWindow = false; %阻止训练窗口的弹出net.trainParam.showCommandLine = false; %阻止训练窗口的弹出net=train(net,p,t);Out=sim(net,p_test);end上次那个问题也是你问的吧?
把上次产生的p和t,用mapminmax函数进行归一化后,传递给这个函数即可,测试的p也可以现在就加进去。
BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。
clc;clear;close all;
L1=1;
L2=1;
theta1=linspace(0,pi/2,100);
theta2=linspace(0,pi/2,100);
[x y]=fun(L1,L2,theta1,theta2);
plot(x,y,'o');hold on;
P = [theta1;theta2];
T = [x;y];
net = newff(minmax(P),[20,2],{'tansig','purelin'});
net.trainFcn = 'trainlm';
net.trainParam.epochs = 500;
net.trainParam.goal = 1e-6;
[net tr] = train(net,P,T);
实际上,经过训练之后,神经网络就拟合了输入和输出数据之间的函数关系。只要训练的足够好,那么这个拟合的关系就会足够准确,从而能够预测在其他的输入情况下,会有什么样的输出。
如果要预测t=[6
7]两点的R值,先以t=[1
2
3
4
5]作为输入,R=[12
13
14
14
15]作为输出,训练网络。训练完成之后,用t=[2
3
4
5
6]作为输入,这样会得到一个输出。不出意外的话,输出的数组应该是[13
14
14
15
X],这里的X就是预测t=6时的R值。然后以t=[3
4
5
6
7]作为输入,同理得到t=7时候的R值。
根据我的神经网络预测,t=6时,R=15,t=7时,R=15。我不知道这个结果是否正确,因为神经网络通常需要大量的数据来训练,而这里给的数据似乎太少,可能不足以拟合出正确的函数。
每一层函数的映射关系看成是y=ax+b的话,a是权值,b是阈值,训练过程是通过不断调整a和b的值最终实现神经网络的预测功能的。
matlab已知模型和数据 求拟合图像代码
plot(t,T,'r*',t1,y1,'ks',t2,y2,'bp'),grid on 7、完善代码后,运行可以得到如下结果。8、从拟合结果表明,数据基本同时符合模型1和模型2。
谯肺兰释: matlab编写BP神经网络很方便的,这个工作不用像编程序的C什么的那样还要编写算法.这个算法早已经在软件的库里提供了.你只要用一条语句就出来了.把参数,深度和节点固定的往里一代数就可以了.还有一点,注意最后结果的收敛性,神经网络发展一直是曲折前进的,为什么这样,现在不太给力,因为面临着一个收敛的问题,实现起来效果不好.这些程序网上有很多,你借一本基本的神经网络的书里面也有.望采纳.
北宁市18515224623: matlab bp神经网络 - ?
谯肺兰释: P= [P,P_1]; end end T = P;% 神经网络输入与输出采用同一矩阵...net= train(net,P,T); 很可能是这里,输入输出采取相同的量,但是输出需要转置一下.
北宁市18515224623: 求BP神经网络的MATLAB算法 - ?
谯肺兰释: 以常用的三层BP为例:net=newff(P,T,{m},{'tansig'},'trainlm');//用newff建立新的网络net,P为样本输入,T为目标输出,m为隐层的神经元数目,tansig为隐层到输出层的传输函数,如果是多隐层则要给出每层的输出函数,trainlm为训练函数net....
北宁市18515224623: 用Matlab算BP神经网络的具体算法??
谯肺兰释: BP神经网络的传递函数一般采用sigmiod函数,学习算法一般采用最小梯度下降法;下面是具体的程序例子: 例1 采用动量梯度下降算法训练 BP 网络. 训练样本定义如下: 输入矢量为 p =[-1 -2 3 1 -1 1 5 -3] 目标矢量为 t = [-1 -1 1 1] 解:本例的...
北宁市18515224623: 关于BP神经网络MATLAB程序 - ?
谯肺兰释: 1,我用的是matlab R2008,一列代表一个样本.其他版本的不知道2,matlab中神经网络工具箱就已经很方便了,调用函数和修改参数就可以用了.3,net_1.trainParam.lr代表学习速率,net_1.trainParam.mc则是动量系数.至于参数的确定,要看具体情况.
北宁市18515224623: 如何用MATLAB实现 BP神经网络 - ?
谯肺兰释: 一种启发式的改进就是,为学习速率选用自适应值,它依赖于连续迭代步骤中的误差函数值. 自适应调整学习速率的梯度下降算法,在训练的过程中,力图使算法稳定,同时又使学习的步长尽量地大,学习速率则是根据局部误差曲面作出相应的调整.
北宁市18515224623: 用MATLAB建立bp神经网络模型,求高手,在线等?
谯肺兰释: Matlab神经网络工具箱提供了一系列用于建立和训练bp神经网络模型的函数命令,很难一时讲全.下面仅以一个例子列举部分函数的部分用法.更多的函数和用法请仔细查阅Neural Network Toolbox的帮助文档. 例子:利用bp神经网络模型建立z=...
北宁市18515224623: 用Matlab编程BP神经网络进行预测 - ?
谯肺兰释: 原理就是:建立网络-数据归一化-训练-预测-数据反归一化.附件是电力负荷预测的例子,可以参考.BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一.BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程.它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小.BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer).
北宁市18515224623: BP神经网络用matlab如何编写??
谯肺兰释: 可以参考神经网络工具箱说明,比如train函数等.调整好数据对应就行
北宁市18515224623: matlab编程问题,建立BP神经网络 - ?
谯肺兰释: %采用动量梯度下降算法训练 BP 网络.close all clear echo on clc % NEWFF——生成一个新的前向神经网络 % TRAIN——对 BP 神经网络进行训练 % SIM——对 BP 神经网络进行仿真 pause % 敲任意键开始 clc% 定义训练样本 % P 为输入矢量 ...