matlab编程关于BP算法的问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 03:47:16
哪位高人知道怎么编写matlab数值仿真方面的东西,我这边找不到相关的文献资料,具体的是我想设计一个F=f(x,y,z)的非线性相关的函数,x,y,z之间没有线性相关,怎么样把这个f设计出来呢?
多谢各位,我现在不知道怎么确定BP算法newff中的每层神经元数目,我给大家写一下,请各位帮帮我:
x=[0 0 0;0.1428 0 0;0.4286 0 0;0.7143 0 0;1 0 0;0 1 0;0.1428 1 0;0.4286 1 0;0.7143 1 0;1 1 0;0 0.3401 0.5;0.1428 0.3401 0.5;0.4286 0.3401 0.5;0.7143 0.3401 0.5;1 0.3401 0.5;0 0.3401 1;0.1428 0.3401 1;1 1 1];
xm=x';
m=[0.08445 0.09402 0.11989 0.10665 0.09981 0.19127 0.20543 0.23391 0.21416 0.20550 0.18911 0.15711 0.16927 0.15482 0.11855 0.20608 0.18221 0.3011];
net=newff([0 1;0 1;0 1],[S1,S2],{'logsig''purelin'},'trainlm');
就是最后这个S1,S2怎么确定呢?我是该设计两层的Bp网络吗?
各位帮帮我吧,
以前没学过这个,难为死我了;

clear
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 = 1000;
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=[1 2 3]'
sim(net_1,x)

你这叫非参数回归问题
可以利用神经网络等得到,matlab里神经网络工具箱看看就会了
楼下的回答基本就是正确的,你可以参考啊,
S1的确定不一定,根据回归的精度你可以自己设定;
S2是输出层的神经元数,你的函数是F=f(x,y,z),所以输出节点就是1,S2=1;