matlab bp神经网络 精度低>> p=[14.8 25 32.1;25 32.1 38;32.1 38 52;38 52 53.2;52 53.2 54;53.2 54 58;54 58 68.1;58 68.1 86;68.1 86 90.1;86 90.1 100;90.1 100 105.0;100 105.0 107.3;105.0 107.3 108.6;107.3 108.6 109.7;108.6 109.7 110.2;109.7 110.2 1

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/28 14:52:51
matlab bp神经网络 精度低>> p=[14.8 25 32.1;25 32.1 38;32.1 38 52;38 52 53.2;52 53.2 54;53.2 54 58;54 58 68.1;58 68.1 86;68.1 86 90.1;86 90.1 100;90.1 100 105.0;100 105.0 107.3;105.0 107.3 108.6;107.3 108.6 109.7;108.6 109.7 110.2;109.7 110.2 1
xV[SF+;餐E{C;}CڑmKlSf2c @ ' R cm3Z]zV+ۂfv\pLLHALj֢YZ]SFb}Hp#DNh=[ ZOv}",XO9[Osrbou=>#Yh#m`M;806"̳ zSbmsz3D} L0Sp5Sv:Kx?K|DK|IKlzF;+  PH8Fܢ>m }[3qA $>3L0db8,үI&Cό)9:] Hdp!`{(3e`}230#@&%EckJRRM')1RصL74N~|$` Ž酪\\*e77>2f;^WyGC~1j~Yxm+Jj(?pKI yrZu* )}TUc?_oοopiεrŵM\Z'5zI}G]z$2 B;j.רdi=woqzA{Z] @:C;>V.Kőf3 t\Gt&W,)y"S:sOa ƫ]&EIx j)GHk'Zk0Jg`:9PU#m A pm{VZSL#[P2^lL{V Іk"(q&egC  z2" Y7_ 7˲4iAZ [`sDLZk?૙{ı.`Mb{ 4oz1Ϗ?JB{L+CfǣD&fR4<Ɇ1ѰpLw~>s@ yA䅠N-DK. W]^ y z@7#Hs. $@? MxXqEW KA3spʲKUOo)z/JV/؍6jL^A@,h0YV7`7 ڌLP^Vi]:h92])lPEXRkzvN2gVM` Jh^Ǎ@<yviad)ҏ'Fr*HѠ߷ b|sҝfФ-*M"s0dVmN>hXWR>ilFk^. KrR$_d

matlab bp神经网络 精度低>> p=[14.8 25 32.1;25 32.1 38;32.1 38 52;38 52 53.2;52 53.2 54;53.2 54 58;54 58 68.1;58 68.1 86;68.1 86 90.1;86 90.1 100;90.1 100 105.0;100 105.0 107.3;105.0 107.3 108.6;107.3 108.6 109.7;108.6 109.7 110.2;109.7 110.2 1
matlab bp神经网络 精度低
>> p=[14.8 25 32.1;
25 32.1 38;
32.1 38 52;
38 52 53.2;
52 53.2 54;
53.2 54 58;
54 58 68.1;
58 68.1 86;
68.1 86 90.1;
86 90.1 100;
90.1 100 105.0;
100 105.0 107.3;
105.0 107.3 108.6;
107.3 108.6 109.7;
108.6 109.7 110.2;
109.7 110.2 112.6;
110.2 112.6 133.5;
112.6 133.5 148.6;
133.5 148.6 178.0;
148.6 178.0 200.0]';
>> t=[38 52 53.2 54 58 68.1 86 90.1 100 105 107.3 108.6 109.7 110.2 112.6 133.5 148.6 178 200 222];
>> u=p;
>> tt=t;
>> [p,minp,maxp,t,mint,maxt]=premnmx(p,t)
>> net=newff([-1 1;-1 1;-1 1],[7,1],{'tansig','logsig'},'traingd');
>> net.trainParam.show=1000;
>> net.trainParam.Lr=0.01;
>> net.trainParam.epochs=500000;
>> net.trainParam.goal=10^(-4);
>> net=train(net,p,t)
为什么跑50w次精度都还是很低?

matlab bp神经网络 精度低>> p=[14.8 25 32.1;25 32.1 38;32.1 38 52;38 52 53.2;52 53.2 54;53.2 54 58;54 58 68.1;58 68.1 86;68.1 86 90.1;86 90.1 100;90.1 100 105.0;100 105.0 107.3;105.0 107.3 108.6;107.3 108.6 109.7;108.6 109.7 110.2;109.7 110.2 1

首先是我不知道你用的matlab是什么版本.

如果用的2010以后的版本,那么你这样初始化神经网络一定会报警告.

2010版以后初始化神经网络的语句是这样的

net = newff(p, t, 7);

输出层不需要自己去告诉系统.

我想知道的第二个问题,是你的输出层函数是否需要使用logsig.如果使用purelin,那么你大可不必去归一化.后面我会告诉你原因.

你手动指定了训练次数,但是学习率0.01这个数值不知道你从哪里找到的.我可能会选择高一点的学习率,最高我用过0.25.

训练函数你也是手动指定的,这个是需要的么?如果不需要,对于7个神经节点,完全可以使用trainlm,这样你也不需要这么多的训练次数.


下面说一下2010以后的matlab中,神经网络训练增加的一个功能.在初始化神经网络以后,有一个默认的dividing function,将训练样本中的一部分用来校验神经网络性能,以防止过度训练.那么这个参数可能会导致训练不充分.在初始化神经网络以后,需要做的工作是设定net.divideFcn = '';用来去掉这个分配函数.

如果你需要更改你的transfer function,那么可以在net.layers{2}.transferFcn = 'logsig'将输出层传输函数手动修改.


那么,我使用全默认设置,没有进行归一化处理,获得的结果是这样的.

这个就是把你的t和训练后的神经网络计算的结果放在一起.结果已经很不错了.

如过我去掉了分配函数,那么神经网络就会一直训练到训练次数上限或者达到目标值.165次训练后,误差值是1.77e-19(误差使用mean squared error计算),结果在这里贴出来已经没意义了,因为几乎没有误差.

如果你还有问题,那么跟我细聊一下.