hfl
2009-07-12, 01:38
我用实验得到了Z与(X,Y)的数据,实际上Z与(X,Y)是有必然的联系的,所以我想把这个关系找出来,以下是测试得到的真实数据,
下面程序有什么问题呢,数据一定要归一化吗?谢谢,不胜感激,马上就要用了,以前没有接触过BP,请各位帮帮忙
clear all;
disp( 'X,Y同时训练,newff 输入已归一化,共16组样本');
P =[1 10 20 30 40 50 60 70 80 90 1 10 20 30 40 50 60 70 80 90 1 10 20 30 40 50 60 70 80 90 1 10 20 30 40 50 60 70 80 90 1 10 20 30 40 50 60 70 80 90 1 10 20 30 40 50 60 70 80 90 1 20 30 40 50 60 70 80 1 20 30 40 50 60 70 80 1 30 40 50 60 70 80 1 30 40 50 60 70 80 1 50 60; 150 150 150 150 150 150 150 150 150 150 200 200 200 200 200 200 200 200 200 200 250 250 250 250 250 250 250 250 250 250 300 300 300 300 300 300 300 300 300 300 350 350 350 350 350 350 350 350 350 350 400 400 400 400 400 400 400 400 400 400 500 500 500 500 500 500 500 500 600 600 600 600 600 600 600 600 700 700 700 700 700 700 700 800 800 800 800 800 800 800 900 900 900];
T =[200 2.2 1 0.9 0.7 0.7 0.7 0.8 0.9 1.8 200 7 1 1.2 0.9 0.7 0.7 0.9 1.2 6.7 200 13.5 1.6 1.1 0.7 0.7 0.7 0.9 1.5 10.2 200 26.4 3.1 1.6 1 0.9 0.9 1.3 2.4 15.3 200 40.1 3.4 1.4 0.8 0.7 0.7 1.3 1.2 17.8 200 45.7 6.2 2.9 1.3 0.8 0.9 1.7 1.1 26.4 200 7.3 2.9 1.3 0.8 0.9 1.9 0.7 200 11.7 5.4 2.3 1.1 1.4 3.9 0.9 200 7.6 3.1 1.5 2.3 5.7 1.2 200 26.5 6.3 3.2 5 12.3 2.2 200 12.4 29.9];
% 隐层节点数
s1 = 4;
% 隐层节点数
s2 = 1;
% 输出层节点数
net=newff(minmax(P),[s1 s2],{'logsig' 'purelin'},'traingd');
% 创建网络
net.trainParam.epochs=5000;
net.trainParam.goal=0.01;
net.trainParam.lr = 0.25;
%目标误差
% net.iw{1,1} = iw11;
% 初始化权值和阈值
% net.iw{1,1} = [0.178076; 0.499557; -0.940367; 0.237281];
% net.lw{2,1} = [0.259621 0.463118 -0.97058 -0.17777];
%
% net.b{1} = [0.91113; -0.478622; 0.219642; -0.353008];
% net.b{2} = [-0.61504];
%获取初始值
iw = net.iw{1,1};
lw = net.lw{2,1};
b1 = net.b{1};
b2 = net.b{2};
net=train(net,P,T);
% 训练网络
At = sim(net,P);
%仿真运行,得到测试样本的输出
% atafter_train_iw = net.iw{1,1};
% atafter_train_lw = net.lw{2,1};
%
% % % % 查看训练后的权值和阈值
% after_train_b1= net.b{1};
% after_train_b2 = net.b{2};
下面程序有什么问题呢,数据一定要归一化吗?谢谢,不胜感激,马上就要用了,以前没有接触过BP,请各位帮帮忙
clear all;
disp( 'X,Y同时训练,newff 输入已归一化,共16组样本');
P =[1 10 20 30 40 50 60 70 80 90 1 10 20 30 40 50 60 70 80 90 1 10 20 30 40 50 60 70 80 90 1 10 20 30 40 50 60 70 80 90 1 10 20 30 40 50 60 70 80 90 1 10 20 30 40 50 60 70 80 90 1 20 30 40 50 60 70 80 1 20 30 40 50 60 70 80 1 30 40 50 60 70 80 1 30 40 50 60 70 80 1 50 60; 150 150 150 150 150 150 150 150 150 150 200 200 200 200 200 200 200 200 200 200 250 250 250 250 250 250 250 250 250 250 300 300 300 300 300 300 300 300 300 300 350 350 350 350 350 350 350 350 350 350 400 400 400 400 400 400 400 400 400 400 500 500 500 500 500 500 500 500 600 600 600 600 600 600 600 600 700 700 700 700 700 700 700 800 800 800 800 800 800 800 900 900 900];
T =[200 2.2 1 0.9 0.7 0.7 0.7 0.8 0.9 1.8 200 7 1 1.2 0.9 0.7 0.7 0.9 1.2 6.7 200 13.5 1.6 1.1 0.7 0.7 0.7 0.9 1.5 10.2 200 26.4 3.1 1.6 1 0.9 0.9 1.3 2.4 15.3 200 40.1 3.4 1.4 0.8 0.7 0.7 1.3 1.2 17.8 200 45.7 6.2 2.9 1.3 0.8 0.9 1.7 1.1 26.4 200 7.3 2.9 1.3 0.8 0.9 1.9 0.7 200 11.7 5.4 2.3 1.1 1.4 3.9 0.9 200 7.6 3.1 1.5 2.3 5.7 1.2 200 26.5 6.3 3.2 5 12.3 2.2 200 12.4 29.9];
% 隐层节点数
s1 = 4;
% 隐层节点数
s2 = 1;
% 输出层节点数
net=newff(minmax(P),[s1 s2],{'logsig' 'purelin'},'traingd');
% 创建网络
net.trainParam.epochs=5000;
net.trainParam.goal=0.01;
net.trainParam.lr = 0.25;
%目标误差
% net.iw{1,1} = iw11;
% 初始化权值和阈值
% net.iw{1,1} = [0.178076; 0.499557; -0.940367; 0.237281];
% net.lw{2,1} = [0.259621 0.463118 -0.97058 -0.17777];
%
% net.b{1} = [0.91113; -0.478622; 0.219642; -0.353008];
% net.b{2} = [-0.61504];
%获取初始值
iw = net.iw{1,1};
lw = net.lw{2,1};
b1 = net.b{1};
b2 = net.b{2};
net=train(net,P,T);
% 训练网络
At = sim(net,P);
%仿真运行,得到测试样本的输出
% atafter_train_iw = net.iw{1,1};
% atafter_train_lw = net.lw{2,1};
%
% % % % 查看训练后的权值和阈值
% after_train_b1= net.b{1};
% after_train_b2 = net.b{2};