马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
小弟初来,在这个版看了很多精华,然后试着编了一个bp神经网络的命令流,但发觉不能运行,请大家帮帮忙,谢谢了!
p=[26.11 13.44 30.54 25.43 14.75 38.98 25.45 15.07 40.71 20.50 11.53 24.43;
30.83 20.49 31.79 30.05 20.95 40.87 30.12 21.12 43.01 26.18 17.57 27.20;
30.44 13.78 35.47 29.13 14.32 45.24 29.07 14.47 47.35 22.40 15.07 29.15;
32.99 23.65 37.60 32.04 23.92 47.98 32.06 24.04 50.36 26.24 22.77 31.72;
32.39 23.53 40.79 32.36 25.41 52.63 32.56 25.91 55.25 27.98 21.42 33.70;
34.90 18.98 29.92 33.13 18.84 37.59 33.02 18.84 39.26 27.06 19.36 24.97;
32.29 12.94 33.21 30.81 13.74 42.14 30.73 13.94 43.97 24.25 12.79 26.78;
32.75 19.88 35.96 32.14 21.52 45.94 32.21 21.94 48.01 27.20 18.11 29.05;
36.78 21.84 36.97 36.04 22.93 47.89 36.18 23.24 50.47 32.45 17.70 31.65]';
t=[1.10 8.00 1.00 12.00 0.25;
1.20 8.00 3.00 28.00 0.22;
1.30 8.00 2.00 20.00 0.16;
1.40 8.00 5.00 24.00 0.19;
1.50 8.00 4.00 16.00 0.28;
1.10 10.00 4.00 24.00 0.16;
1.20 10.00 1.00 16.00 0.19;
1.30 10.00 3.00 12.00 0.28;
1.40 10.00 2.00 28.00 0.25]';
%归一化
for i=1:12
P(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end
for i=1:5
T(i,:)=(t(i,:)-min(t(i,:)))/(max(t(i,:))-min(t(i,:)));
end
net=newff(minmax(P),[19,5],{'tansig','purelin'},'trainlm');
net.trainParam.epochs=5000;
net.trainParam.goal=0.001;
net.trainParam.show=50;
net.trainParam.lr=0.05;
net.trainParam.show = NaN; %不显示训练过程中那个描述误差的对话框
net=train(net,P,T);
y=sim(net,p);
p_test=[40.64 30.65 29.25 39.41 30.66 37.00 39.46 30.76 38.82 36.28 23.45 25.22]';
t_test=[1.10 12.00 5.00 28.00 0.28]';
t=sim(net,p_test);
err=t_test-t;
jj=1:5;
plot(jj,err,'r');
%选择误差小的保存网络
%save filename net
%以后调用时
%load filename net
%p_test=[ ];
%t_test=[ ];
%t=sim(net,p_test);
%err=t_test-t;
%plot(p_test,err);
还有一个问题:在别人的论文中看到这样一句话:
“为了更好使用神经网络中的训练函数,往往需要对样本做一些事先和事后的小狐狸,本文采用了
%“零均值和标准偏差型函数”(prestd,poststd,trastd)对样本进行预处理”
这个是不是就相当于上面的归一化处理?如果用“零均值和标准偏差型函数”,那么应该如何编写文件呢?
谢谢大家的帮忙。
[ 本帖最后由 eight 于 2007-7-5 15:13 编辑 ] |