我的数据集包括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]);
和
net=newff(minmax(Pl),[14 12 8 myANN.m],{'tansig' 'tansig' 'tansig' 'purelin'},'trainlm');
答案 0 :(得分:0)
我认为NEWFF (链接需要登录)的第二个参数应该是目标向量,而不是隐藏层的大小(这是第三个参数)。 / p>
请注意,隐藏图层的默认传输功能为tansig
,输出图层的默认传输功能为purelin
,默认训练算法为trainlm
。
最后,请记住,如果要获得可重现的结果,则必须在每次运行开始时手动将随机数生成器重置为固定状态。