声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1365|回复: 4

[综合讨论] 虚心请教BP神经网络编程中的问题

[复制链接]
发表于 2007-7-3 11:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-7-3 21:50 | 显示全部楼层
:@( :@( 竟然没有人愿意回答下么?还是我的问题太简单了?
我已经搜索整个版面,我也是照着很多人的回答编写的啊?
谢谢大家了,帮帮我吧
发表于 2007-7-4 10:34 | 显示全部楼层
画误差图不能直接用
err=t_test-t;
要先对t_test反归一化,再减。
把反归一化语句写上应该问题不大

(prestd,poststd,trastd)对样本进行预处理”
其实也是一种归一化处理形式,都是使得样本更好训练,减少训练误差。
 楼主| 发表于 2007-7-4 11:03 | 显示全部楼层
:@) :@) 谢谢斑竹!!!

我是学力学的,因此对这个一窍不通,我发现您给我改了很多地方,才知道我原来错了很多地方!

我一定继续钻研,有问题再请教。

我是河海大学的,有需要我帮忙的我可以帮,谢谢!
发表于 2008-1-7 09:21 | 显示全部楼层
真是高手如云,学习中!:lol
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-23 17:26 , Processed in 0.065122 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表