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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    目前正在做神经网络训练方面的学习,拿一份数据进行了练习,但是对数据进行处理之后,发现在训练过程中,误差随着迭代次数的增加也在增加,之后维持不变,请教各位大神,这可能是出于什么缘故?
    2 V) A% ?/ J# V/ R+ ]# M具体代码如下:6 v8 k: X4 X4 C
        err = expectedOut'-out_out;
    ( k, B) d" z4 O* c6 T  O! |+ j8 V    sse = sumsqr(err);* h! @' F4 ^! D6 `6 h& i% _, ?: C7 s
        errRec(i) = sse;                    %记录每次的错误
    6 ?+ Z/ d1 {% e5 \% }4 k    fprintf('第%d次迭代  误差: %f\n',i,sse);
    , \- h0 S% |" K2 u& e
    * n! F9 [: v" ~* m# ^2 x' }
    % ~" u# F  `. K: y  c其中,expectedOut是实际值,out_out是经过训练之后得到的结果
    , T7 m/ N+ l& w9 F4 x* v然后,结果是这样:; e) W. {4 ?& ~0 U6 a0 K3 y7 L) Y
    第1次迭代  误差: 2.1242335 }0 _+ [0 G# m
    第2次迭代  误差: 8.216954! P$ S- y5 b$ X' \& d: p; O! F& y  F
    第3次迭代  误差: 6.639643) Y! Z( Z, o6 X
    第4次迭代  误差: 27.220103; v* A8 z3 Y* v) a) |
    第5次迭代  误差: 27.222127
    + S( V1 A- a1 ]第6次迭代  误差: 27.222127: T; }0 ~. q9 X4 _& F0 p
    第7次迭代  误差: 27.222127) z8 o1 \- y- H$ U6 S
    第8次迭代  误差: 27.222127
    0 h' z7 }4 W2 m, d/ U5 H% ?# H' M0 ]) C) J# g
    之后误差一直维持不变,想了解一下这是出于什么缘故?是正常情况吗?
    5 [; g  d; X7 q* F
    # A0 E3 ?4 C. C* D. Z/ i
  • 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:211 L: ~1 m! l/ V* N6 r6 d( \
    如果方便给更多一点代码会更容易理解
    4 _$ _9 ?# l# o* `
    %开始迭代$ V( L4 N& ^0 _
    for i=1:maxiter
    9 Q  c: z8 `4 g) S$ ?% V/ K; ^4 P    hid_input = net.w1 * SampInEx;                %3X100, r' K& U0 b& o" ^
        hid_out = logsig(hid_input);                  %3X100    s4 C5 z$ W! j( A' R6 J+ o
        ou_input1 = [hid_out;ones(1,nTrainNum)];      %4X100; x* P9 e# \! A" a; |
        ou_input2 = net.w2 * ou_input1;               %1X100
    1 S+ S, T2 h, S2 z; o0 |    out_out =logsig(ou_input2);                   %1X100% S5 J# U; P/ R* Q) {3 t
        out_Rec(:,i) = out_out;                       %记录每次的输出
    # j8 N9 L2 A8 |8 @: U3 S9 d    err = expectedOut'-out_out;# ]: j& }* [" R* K' W
        sse = sumsqr(err);
    7 Y% z' [: n! y    errRec(i) = sse;                    %记录每次的错误3 D( x/ `, z  f' y
        fprintf('第%d次迭代  误差: %f\n',i,sse);
    $ U- _+ j( F' W7 Z; w/ K    iteration = iteration+1;
      q0 _" _4 ?% N8 c; k: i8 s5 y! X) o   
    / A. a/ |8 ]1 D+ N7 v    %判断是否收敛, a, L. }1 x3 g( X. l. _  @
        if sse<=eb7 v" Z0 {3 h+ `1 o
            break;
    - i5 l2 X+ c5 [/ r4 X+ s    end
    1 Q3 w5 d. d* _' O2 R! f- s   4 C5 r% X2 W# w! Z6 r" p6 i2 b
        %误差反向传播
    " d, V4 v. s/ X; c# q) [    %隐含层与输出层之间的局部梯度度9 {/ W% K! r$ ]  t1 p
        DELTA = err.*dlogsig(ou_input2,out_out);
      L8 n. j; ?' y3 v+ [3 L  C    %输入层与隐含层之间的局部梯度
    ) Q& }) y+ c5 F3 S; O. B/ ^3 m    delta = net.w2(:,1:end-1)'*DELTA.*dlogsig(hid_input,hid_out);
    7 |6 }% Z" |9 x' ^    %权值修改量
    0 c3 \5 x4 A0 V# X0 o0 B# n    dWEX=DELTA*ou_input1';
    ; I3 Z, s& D- ]) [% k' n7 s    dwex=delta*SampInEx';
    . d$ b, q7 \3 ?$ [- a7 E4 v    %修改权值,如果不是第一次修改,则使用动量因子
    2 |! m) B1 w% D3 |) ~    if i==17 O) A/ B; _- g, h! S- Z$ ]' p
            net.w2 = net.w2+eta*dWEX;4 ]3 O# U/ K( `; P
            net.w1 = net.w1+eta*dwex;
    5 ^2 i0 _4 _, e! a" r0 M    else) m# V* f2 l7 i/ I
            net.w2 = net.w2+(1-mc)*eta*dWEX+mc*dWEXOld;5 Z: l9 s7 L/ l. E
            net.w1 = net.w1+(1-mc)*eta*dwex+mc*dwexOld;; o8 ]. Y6 M* ^8 J2 x
        end& U9 w8 @' s0 A/ I% ?/ W, |- C
       
    " {" ~+ B! t, n4 B    %记录上一次的权值修改量
    5 S; Z: T+ Y- M- n" `    dWEXOld = dWEX;2 L+ ?7 v; ~6 ^; X0 q6 e" V
        dwexOld = dwex;
    ( r  B, g2 j, pend) T+ M9 b5 v8 ?2 j6 n9 L5 r0 _9 S- @
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-28 00:10 , Processed in 0.125000 second(s), 24 queries , Gzip On.

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

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

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