找回密码
 注册
关于网站域名变更的通知
查看: 485|回复: 3
打印 上一主题 下一主题

迭代之后,误差反而越来越大的问题

[复制链接]
  • TA的每日心情
    开心
    2022-1-21 15:08
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2022-12-1 11:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    目前正在做神经网络训练方面的学习,拿一份数据进行了练习,但是对数据进行处理之后,发现在训练过程中,误差随着迭代次数的增加也在增加,之后维持不变,请教各位大神,这可能是出于什么缘故?
    # t0 k1 Y+ ~; Z7 v9 j/ m- b& D8 @/ e具体代码如下:8 [$ h9 B. |* g
        err = expectedOut'-out_out;
    7 d8 }+ B& x( Z6 J    sse = sumsqr(err);. u% _4 X* Z1 ?
        errRec(i) = sse;                    %记录每次的错误8 T  ?; K0 S8 o( l
        fprintf('第%d次迭代  误差: %f\n',i,sse);2 P. H' X% f* ~& y
    % t8 T. h/ C. p% m" D2 H: @( r
    # M+ z+ I$ \$ ~' l7 @
    其中,expectedOut是实际值,out_out是经过训练之后得到的结果6 G) y+ Y& _9 o8 I6 _& C5 L
    然后,结果是这样:* E3 p" G. L" j- f
    第1次迭代  误差: 2.124233; I, G, c' Z8 q0 }
    第2次迭代  误差: 8.216954
    " m7 M; F' R1 e+ ?第3次迭代  误差: 6.639643
    " ~& J  W4 G2 C  F5 x% r- A第4次迭代  误差: 27.220103
    % D+ z& b+ N6 }9 v第5次迭代  误差: 27.222127
    3 B6 J% ?0 I$ b+ f: j$ X+ h& b第6次迭代  误差: 27.222127( G; `, v# b2 \- \! s
    第7次迭代  误差: 27.222127  ?8 c9 B% m/ f% K& c* Z; @& T
    第8次迭代  误差: 27.2221270 \. B# \+ U7 Q) ?; {
    9 @* y3 u+ }9 c  e
    之后误差一直维持不变,想了解一下这是出于什么缘故?是正常情况吗?
    1 e4 L2 z( V) O) X. {% i4 F- v! _& E2 q- k! m$ ~
  • TA的每日心情
    开心
    2022-1-24 15:10
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-12-1 13:12 | 只看该作者
    (1)判断条件是否有问题,不该迭代却迭代了;(2)迭代方向是否搞反了

    该用户从未签到

    3#
    发表于 2022-12-1 13:21 | 只看该作者
    如果方便给更多一点代码会更容易理解

    点评

    %开始迭代 for i=1:maxiter hid_input = net.w1 * SampInEx; %3X100 hid_out = logsig(hid_input); %3X100 ou_input1 = [hid_out;ones(1,nTrainNum)]; %4X1  详情 回复 发表于 2022-12-1 13:27
  • TA的每日心情
    开心
    2022-1-21 15:08
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
     楼主| 发表于 2022-12-1 13:27 | 只看该作者
    TEL15286598 发表于 2022-12-1 13:21/ n/ x* [6 z0 J- T" t6 Q
    如果方便给更多一点代码会更容易理解

    8 G" s- A* P7 U9 \%开始迭代
    " D/ r$ A+ }0 [for i=1:maxiter. r8 G' u1 j9 \& Z! x) z
        hid_input = net.w1 * SampInEx;                %3X100) M$ [& W/ ^# e9 a4 F6 n+ j
        hid_out = logsig(hid_input);                  %3X100  $ M  I5 o: e& _3 Z  a  W7 E
        ou_input1 = [hid_out;ones(1,nTrainNum)];      %4X100+ }# Q" g4 Q1 q/ v7 c0 |4 Z4 |
        ou_input2 = net.w2 * ou_input1;               %1X1002 q( b1 t1 Z! p5 v8 I
        out_out =logsig(ou_input2);                   %1X100' a- Y( q: @0 ?2 c
        out_Rec(:,i) = out_out;                       %记录每次的输出- h3 G/ I' G" u" [, @- J6 B: d& X
        err = expectedOut'-out_out;
    1 ?+ H  ?& d* b0 {, d% d* @1 B    sse = sumsqr(err);
    % j1 W! C4 s+ y% {0 `& M* i( I    errRec(i) = sse;                    %记录每次的错误
    ! ^9 H  E. d' Z3 M& X2 L    fprintf('第%d次迭代  误差: %f\n',i,sse);% k5 e' ^& u. L/ R- ?$ o0 Y2 \
        iteration = iteration+1;
    , n: k# Q) K4 P* f0 b9 _% ]( R$ t   9 I$ ?9 l5 p8 J% O
        %判断是否收敛, G; H& i: B' F0 ]# }: u! n% z2 a3 J
        if sse<=eb; X/ W/ X8 O5 x# o2 L: ]
            break;' o8 g$ n- ]! ~) R1 H
        end8 b, c  n. X' \' k2 U5 V- m
       
    ; k% {  R$ z# m; C3 U3 r6 g$ H: ~    %误差反向传播
    $ c! ]- ]5 r8 m9 z; H    %隐含层与输出层之间的局部梯度度
    ; I) c5 M6 S  R$ d    DELTA = err.*dlogsig(ou_input2,out_out);. S, _, F* A$ c! V; g, ?+ k  z
        %输入层与隐含层之间的局部梯度
    6 p; e3 Y! {- S; V1 s! A% a    delta = net.w2(:,1:end-1)'*DELTA.*dlogsig(hid_input,hid_out);2 X7 S# K; E% V1 Z" A: R  X' v
        %权值修改量0 [( c5 W* A. h; n: p
        dWEX=DELTA*ou_input1';1 Z, F8 E- v1 L+ m
        dwex=delta*SampInEx';6 }& I$ R" {4 ]) T% Q5 [6 `
        %修改权值,如果不是第一次修改,则使用动量因子* w2 }8 k3 ^: {& j! Z! }
        if i==1/ w. {4 [8 \4 ^; h6 ~% T* i
            net.w2 = net.w2+eta*dWEX;
    ' H% |. D( k! u" h5 r        net.w1 = net.w1+eta*dwex;
    ( M* t- Y4 r3 H% f8 O' P' y0 n    else# T% `$ A  L5 x  r" n1 T
            net.w2 = net.w2+(1-mc)*eta*dWEX+mc*dWEXOld;+ Q! _; I: b0 V6 j, c& U
            net.w1 = net.w1+(1-mc)*eta*dwex+mc*dwexOld;
    % [& K! O# z: w( e6 |) ^, `( `    end& K7 Z7 X7 K" u
       ! F& O- _* ?$ C* F+ U
        %记录上一次的权值修改量
    / s' z. ?: m. ?, U! |    dWEXOld = dWEX;( {. R: D. [, _, j7 T: y7 y3 }
        dwexOld = dwex;# q# e4 u# v! N  E0 }' j" B; X
    end1 c# z7 E, k9 |5 h/ L  ~" l% H
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-23 16:21 , Processed in 0.156250 second(s), 25 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表