有关BP神经网络的编程问题,用matlab,希望大家指点一下,谢谢!

在线等:我是初学者,第一次用matlab编程,关于bp神经网络的,就是先对数据训练,又预测的。编程的过程中遇到了问题,不知道怎么解决,麻烦大家指点一下,有错的地方告诉我。训练的数据一共是18组,每个样本有3个指标,隐含层是5个节点,输出层是1个节点,预测的数据是5组,我的程序如下:
P=[0.4 0.8 1,0.4 0.6 0.4,0. 0.6 0.8,0.6 0.4 0.6,0.3 0.9 0.1,0.4 0.2 0.8,0.6 0.4 0.5,0.5 0.1 0.6,0.2 0.6 0.3,0.08 0.8 0.2,0.2 1 0.5,0.3 0.3 0.6,0.1 0.6 0.03,0.5 0.7 0.3,0.2 0.8 0.4,0.03 0.4 0.3,1 0.3 0.3,0.1 0 0.3] %请问在matlab里输入18组数据,是这样么?

>> T=[34,41,38,44,30,45,49,47,34,32,36,45,30,43,33,28,48,40] %这是输出层的数据,格式这样,对么?

>> net=newff(minmax(P),[5,1],{'logsig','purelin'},'traingdm');%这里面用的函数对么,尤其是traingdm,对么,还是应该用trainlm?
>> net=init(net);
>> net.trainParam.epochs=10000;
>> net.trainParam.mc=0.60;
>> net.trainParam.lr=0.85;
>> net.trainParam.goal=0.03;
>> [net,tr,Y,E]=train(net,P,T);%这步matlab就给出了下面的问号部分,我不明白什么意思,不会改。
??? Error using ==> network.train
Targets are incorrectly sized for network.
Matrix must have 54 columns.

>>A = sim(net,P);
>>E = T - A;
MSE=mse(E)

>>P_test=[0.3 0.7 0.2,0.2 0.6 0,0 0.4 0.6,0.2 0.5 0.1,0.3 0.6 0.1];
>>out=sim(net,P_test) %就到这里,是完整的么?麻烦大家指点。谢谢。

P=[0.4 0.8 1;
0.4 0.6 0.4;
0. 0.6 0.8;
0.6 0.4 0.6;
0.3 0.9 0.1;
0.4 0.2 0.8;
0.6 0.4 0.5;
0.5 0.1 0.6;
0.2 0.6 0.3;
0.08 0.8 0.2;
0.2 1 0.5;
0.3 0.3 0.6;
0.1 0.6 0.03;
0.5 0.7 0.3;
0.2 0.8 0.4;
0.03 0.4 0.3;
1 0.3 0.3;
0.1 0 0.3]';
T=[34,41,38,44,30,45,49,47,34,32,36,45,30,43,33,28,48,40];
net=newff(minmax(P),[3,5,1],{'purelin','logsig','purelin'},'traingdm');
net=init(net);
net.trainParam.epochs=10000;
net.trainParam.goal=0.03;
net=train(net,P,T);
A = sim(net,P);
E = T - A;
MSE=mse(E);
P_test=[0.3 0.7 0.2;
0.2 0.6 0;
0 0.4 0.6;
0.2 0.5 0.1;
0.3 0.6 0.1]';
out=sim(net,P_test)
这样试试,对是用什么学习函数,只有自己试了,没有成熟的理论。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-25
P和T里面的间隔不能用逗号,用分号或者空格都可以的。而且后面都加上分号,至于traingdm和trainlm都是训练函数,是要看跟前面用的传递函数之间的关系确定的,trainlm是系统默认训练函数,运算速度快,适用于比较大的样本,具体要看你的数据组成而定。还有就是用bp神经网络很重要的是确定隐层数,需要反复试验确定,这个是重点,直接关系到你的训练性能。先说明这么多吧
第2个回答  2010-05-24
P中不同组数据之间用分号隔开,你用逗号,明显不遵守交通规则……
相似回答