Matlab 为什么在使用其参数时newff()不能正常工作!

Matlab 为什么在使用其参数时newff()不能正常工作!,matlab,neural-network,Matlab,Neural Network,我的数据集包括29个输入和6个输出。当我使用 net = newff(minmax(Pl),[14 12 8 6]); 建立我的前馈MLP网络并通过 net.trainParam.epochs=50; net=train(net,Pl,Tl); 网络无法学习我的数据集,其错误不会降低到0.7以下,但当我使用newff函数的参数时,如下所示: net=newff(minmax(Pl),[14 12 8 6],{'tansig' 'tansig' 'tansig' 'purelin'},'tr

我的数据集包括29个输入和6个输出。当我使用

net = newff(minmax(Pl),[14 12 8 6]); 
建立我的前馈MLP网络并通过

net.trainParam.epochs=50;
net=train(net,Pl,Tl);
网络无法学习我的数据集,其错误不会降低到0.7以下,但当我使用newff函数的参数时,如下所示:

net=newff(minmax(Pl),[14 12 8 6],{'tansig' 'tansig' 'tansig' 'purelin'},'trainlm');
误差减小得非常快,低于0.0001!不寻常的是,当我使用前面的代码时,只使用一个层,包括2个神经元:

net=newff(minmax(Pl),[2 6],{'tansig' 'purelin'},'trainlm');
误差再次降低到0.2以下,值得怀疑! 请给我一些提示,并帮助我了解以下两者之间的区别:

net = newff(minmax(Pl),[14 12 8 6]);


我认为link requires login的第二个参数应该是目标向量,而不是第三个参数隐藏层的大小

请注意,隐藏层的默认传递函数为tansig,输出层的默认传递函数为purelin,默认训练算法为trainlm


最后,请记住,如果要获得可再现的结果,必须在每次运行开始时手动将随机数生成器重置为固定状态。

您使用的是什么版本的MATLAB?另外,不要使用太多的隐藏层。你需要一个,也许两个。跨多个层的Backprop无法正常工作。另外,输入/目标数据的维度是什么?一个旧版本的newff使用了他正在使用的调用约定,因此他可能有一个旧版本的MATLAB。在某些这样的版本中,默认的培训师是traingdx而不是trainlm,因此指定它可能会产生一些影响。@kwatord:感谢您指出这一点,您知道确切的版本是什么吗?顺便说一句,在最新版本中,newff完全被弃用了。。主要的一点是,如果你想比较训练神经网络的结果,记得在每次运行之前以相同的方式给随机数生成器播种。
net=newff(minmax(Pl),[14 12 8 myANN.m],{'tansig' 'tansig' 'tansig' 'purelin'},'trainlm');