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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    目前正在做神经网络训练方面的学习,拿一份数据进行了练习,但是对数据进行处理之后,发现在训练过程中,误差随着迭代次数的增加也在增加,之后维持不变,请教各位大神,这可能是出于什么缘故?
    # G( t3 J/ A' `+ U具体代码如下:2 o$ ^0 b0 ]- l' x4 ^: \0 J( g/ v
        err = expectedOut'-out_out;- @8 s' N' p$ V
        sse = sumsqr(err);
    , P* J# A' d$ ~! w2 W; R" L" X7 v    errRec(i) = sse;                    %记录每次的错误
    + k: w4 `  ?4 [  E/ @0 d" Z5 ~    fprintf('第%d次迭代  误差: %f\n',i,sse);
    # E/ y0 X$ q' ^" o0 G" c, f# p
    ( A2 b; H) V/ h1 c# P- X8 O) \% W+ T7 b0 j6 E
    其中,expectedOut是实际值,out_out是经过训练之后得到的结果
    5 H) ]4 T1 G3 n; l! Q& }9 v! G然后,结果是这样:
    4 G) M/ D; ^. ^第1次迭代  误差: 2.124233
    9 \* G/ L, M8 O9 \第2次迭代  误差: 8.216954
    - w, [3 G0 X8 G3 }' L8 l* L5 S第3次迭代  误差: 6.639643( c9 b; g+ P, |7 X
    第4次迭代  误差: 27.220103" t3 m+ k( G- H3 h9 L" e+ P+ k( J3 \( Q
    第5次迭代  误差: 27.222127
      m5 \0 C5 ~$ A0 `4 r第6次迭代  误差: 27.222127+ t- u8 m$ z$ j4 E' X
    第7次迭代  误差: 27.222127
    ( O, f6 j! \5 v+ h第8次迭代  误差: 27.222127" [! x  h6 P6 \$ r1 X# u+ c
    9 ^( p, p# _- |& E# S$ K; z
    之后误差一直维持不变,想了解一下这是出于什么缘故?是正常情况吗?! u5 E% K- A; A( X# I8 j
    1 @2 P. b  N5 }& k
  • 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
    / |/ @  R4 E- q4 C如果方便给更多一点代码会更容易理解
    7 E0 V4 D0 _) I7 I1 q7 P) D9 r6 ?
    %开始迭代6 g1 N" C8 R8 R  |( d2 C1 }* G
    for i=1:maxiter, _; d% o) V4 p3 a1 R9 U9 _
        hid_input = net.w1 * SampInEx;                %3X1002 s4 P* P6 z$ _$ q: M4 X, Z" _
        hid_out = logsig(hid_input);                  %3X100  
    , K4 Y: R( T8 r5 M2 _8 N" [4 a    ou_input1 = [hid_out;ones(1,nTrainNum)];      %4X100. [' b. v8 v: m% {4 j) K; z
        ou_input2 = net.w2 * ou_input1;               %1X100; ?8 y  `0 T) M& a7 a9 {/ X
        out_out =logsig(ou_input2);                   %1X100. f) F% h- a+ Q  F- n/ E+ _  X& |7 @
        out_Rec(:,i) = out_out;                       %记录每次的输出
    % F: J: n/ _# i8 `    err = expectedOut'-out_out;
    " ?' k5 @* P5 k. C' r0 p8 r# R    sse = sumsqr(err);
    $ u$ G: R( B; o% b8 }    errRec(i) = sse;                    %记录每次的错误/ n, _, W8 x# @* _8 t6 L
        fprintf('第%d次迭代  误差: %f\n',i,sse);& z8 ^* J3 c; o
        iteration = iteration+1;+ }2 @0 T/ G' Z
       ) x, D' F4 U( H" E9 H! q
        %判断是否收敛2 y; G9 x' _) ?' k) W$ q8 I& f9 q! `
        if sse<=eb' D7 H( S  p9 B( \9 N) Q7 g# ?
            break;% b: a4 w% ]$ Y5 H; [( {) r
        end
    - P1 a" V# T2 F; Y   % d% g- ]% U( O, h5 D1 g, u& k1 r
        %误差反向传播
    . i2 b) m; Y! v& w* g  J    %隐含层与输出层之间的局部梯度度
    ; F: f! F* D1 A8 c$ p- z# l    DELTA = err.*dlogsig(ou_input2,out_out);
    5 T3 [3 ]* q# j2 {    %输入层与隐含层之间的局部梯度
    3 f- A. ~! N8 @$ J( U; \    delta = net.w2(:,1:end-1)'*DELTA.*dlogsig(hid_input,hid_out);
      S( x9 T/ E; R" y- c, X# H    %权值修改量% `$ p9 P" @. h. m5 V. ]6 z
        dWEX=DELTA*ou_input1';# c( I4 ~; b$ z" m
        dwex=delta*SampInEx';9 W2 g: v, B! g/ Y9 f
        %修改权值,如果不是第一次修改,则使用动量因子
    ; C) y& ]6 Q2 o& Y, n; E5 N    if i==1
    2 b8 t3 }" \) j3 T        net.w2 = net.w2+eta*dWEX;+ s! t8 v9 i; M! y
            net.w1 = net.w1+eta*dwex;
    ) D- U; G+ i& K1 ]" d- a, @) s    else
    : i1 s. Q  T; W* v* `        net.w2 = net.w2+(1-mc)*eta*dWEX+mc*dWEXOld;
    % w- c1 T# r3 a: e        net.w1 = net.w1+(1-mc)*eta*dwex+mc*dwexOld;
    7 l9 |( z5 M1 D& G# `    end$ X) Q8 k- O0 k" Z
       ) O6 c" N+ F# y
        %记录上一次的权值修改量
      l9 B4 C' e% f$ ?    dWEXOld = dWEX;
    * L( {; U) p0 x' m: X# u    dwexOld = dwex;
    6 E+ ]# g8 r' c" @4 Gend
    5 P3 M& z. w  @, d
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-4 11:23 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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