登录论坛

查看完整版本 : [求助]@急!求助各位高手!BP神经网络训练问题@


lldfll4214
2008-10-20, 21:44
p=[1 3 2 1 1 2 3 4 2 3 4 5 5 5 6 6 6 6;
1 1 1 1 1 1 1 1 2 2 2 2 4 2 2 3 2 4;
2 2 1 1 1 2 1 2 4 5 6 4 6 4 3 4 4 6;
1 3 1 1 3 3 1 3 3 3 3 2 3.3 3 3 3 3 3;
1 3 2 1 2 3 2 3 3 3 3 4 4 3 3 3 4 4;
2 2 2 1 2 2 2 2 3 3 3 3 2 3 3 3 2 3;
2 4 2.5 2 3 4 4 5 4 3.5 4 4.5 4 4 4 3.5 4 3.5;]
c=[498.23 525.14 493.45 487.43 506.57 538.60 542.91 562.47 897.25 989.73 1045.21
1029.67 1106.92 1015.69 1065.72 1108.50 1045.39 1138.28;
16.10 18.45 17.18 15.92 15.68 16.47 17.92 19.23 26.01 29.42 27.97 33.23 35.27
28.90 30.42 36.06 32.01 38.47;
0.0069 0.0046 0.0072 0.0059 0.0051 0.0043 0.0043 0.0046 0.0042 0.0038 0.0041
0.0067 0.0039 0.0042 0.0052 0.0039 0.0047 0.0035;
143.1 178.3 159.3 132.4 138.6 149.2 168.9 172.4 208.9 221.4 223.2 236.2 239.8
216.4 211.3 242.4 232.6 247.9];

>>net=newff(minmax(p),[8,4],{'tansig','purelin'},'trainlm');

>> net.trainParam.show=10;

>> net.trainParam.epochs=300;

>> net.trainParam.goal=1e-2;

>> [net,tr]=train(net,p,t);

TRAINLM, Epoch 0/300, MSE 191063/0.01, Gradient 89935.3/1e-010
TRAINLM, Epoch 10/300, MSE 4153.26/0.01, Gradient 0.858789/1e-010
TRAINLM, Epoch 14/300, MSE 4153.26/0.01, Gradient 9.7283e-008/1e-010
TRAINLM, Maximum MU reached, performance goal was not met.

小弟尝试过修改隐藏层节点,从8到20都试过,最好时精确度只能到10
请教哪些地方出现问题,我应该怎样修改,先谢谢各位了

sbyong
2008-12-03, 11:22
训练使用的输出需要规范化,通常将结果规范化到0-1或-1-1。
你使用tansig传递函数,由于tansig函数的输出在-1-1之间,所有你可以将结果规范到-1-1,当然0-1也可以。
规范化方法有很多,常用的0-1规范方法:
x'=(x-xmin)/(xmax-xmin)
xmin/xmax指每个输出行的最大值和最小值

顺便问一句,Mu是什么,我也是刚学,还没搞太明白

guofeng0108
2008-12-03, 13:33
归一化是需要的!!!!!!!
不知道你是什么版本!!!!!!!!!
有不通的归一化函数的!!!!!!

lldfll4214
2008-12-08, 14:07
谢谢二位指点,Mu我也不知道是什么?我用的是Matlab7.0,想归一化的话要用什么方法?

tangwa
2008-12-09, 09:41
用for循环是不是可以?!

guofeng0108
2008-12-09, 09:45
有一个premnmx函数!!!!!!

还有一个prestd函数!!!!!!!!!
你可以通过help查看!!!!!

lldfll4214
2008-12-16, 11:01
谢谢,我回去试试