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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    目前正在做神经网络训练方面的学习,拿一份数据进行了练习,但是对数据进行处理之后,发现在训练过程中,误差随着迭代次数的增加也在增加,之后维持不变,请教各位大神,这可能是出于什么缘故?
    8 i$ H/ x: Y( N4 X具体代码如下:5 o+ w3 _! f- a7 f5 K
        err = expectedOut'-out_out;6 ?! k1 `, q, |" z
        sse = sumsqr(err);
    $ V; K, t1 D, b, T8 i    errRec(i) = sse;                    %记录每次的错误% a2 b6 U0 G- [/ e
        fprintf('第%d次迭代  误差: %f\n',i,sse);1 P, ]6 Z6 u( e! K( S* g% ~" k

    6 }  q" h( ?/ m. N  P7 o7 [
    * Q) ^+ a+ J6 _  N- A其中,expectedOut是实际值,out_out是经过训练之后得到的结果: U- U8 p7 M  R6 |( o* l1 C" U
    然后,结果是这样:  S! G9 O: H( X% Q. R8 S  {
    第1次迭代  误差: 2.124233
    : |! M) A7 X# V7 j# r4 Q, E第2次迭代  误差: 8.216954
    4 \8 P; L5 L) ^5 l. j第3次迭代  误差: 6.639643
    6 [* a5 q- w+ i4 P. y, G第4次迭代  误差: 27.220103/ v$ a3 _0 ]. M$ I4 U6 p
    第5次迭代  误差: 27.2221274 E% c: X& V0 G9 X
    第6次迭代  误差: 27.2221278 v* [9 R7 D: `% z1 S2 T: r
    第7次迭代  误差: 27.222127% I- |9 a$ ?) @) g# s1 b7 M- E' R
    第8次迭代  误差: 27.222127
    4 b4 r$ O5 [0 Z) h# @
    & S( T6 W. Z1 m" q' R之后误差一直维持不变,想了解一下这是出于什么缘故?是正常情况吗?
    : g- R9 j" o# P6 d3 E6 Q" l$ I$ D% i! P  P2 S) ?
  • 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
    % W* v9 Y1 {- p) H如果方便给更多一点代码会更容易理解

    : d  r6 `3 X3 b%开始迭代# D: \  h8 H3 ?5 F! e5 R
    for i=1:maxiter
    , v3 p* I% _/ O& _    hid_input = net.w1 * SampInEx;                %3X1006 ?" h2 b( K  `
        hid_out = logsig(hid_input);                  %3X100  
    % {: g; X" L- {4 I+ x- J    ou_input1 = [hid_out;ones(1,nTrainNum)];      %4X100
    3 z+ c8 ~9 x: ]: n% k& |    ou_input2 = net.w2 * ou_input1;               %1X1006 A! r  R! S2 Z/ ]2 R$ `
        out_out =logsig(ou_input2);                   %1X100( \) m0 g& q9 U" o/ k
        out_Rec(:,i) = out_out;                       %记录每次的输出5 x9 ~) W# d  g- u" Z" q4 S
        err = expectedOut'-out_out;
    9 q( K! B6 ^* r3 T7 B# I) w+ b  N/ u    sse = sumsqr(err);
    8 @) g% u) k1 @0 o9 r# G    errRec(i) = sse;                    %记录每次的错误
    $ U0 b% t2 C  q5 j! o; y    fprintf('第%d次迭代  误差: %f\n',i,sse);9 v* Q- a9 R% U8 [) Q
        iteration = iteration+1;9 `; [3 a3 f. ?
       # I: Q$ y- f9 S0 `! m
        %判断是否收敛
    & ^/ q' r9 m2 |    if sse<=eb
      C1 ~* l$ Q: @/ _8 v  n& |2 n) K. F- x        break;& S/ t" q5 i+ d9 g0 a
        end
    6 ~  ^0 z# ^9 [3 u) Y. t6 Y   
    7 S3 Y( x/ c/ C% z4 m    %误差反向传播2 g0 P8 Z# ?  ~; ?* O6 G
        %隐含层与输出层之间的局部梯度度0 V! J5 U8 j4 a+ i
        DELTA = err.*dlogsig(ou_input2,out_out);
    9 z2 E$ l; f; u0 j8 g" }    %输入层与隐含层之间的局部梯度
    5 M! f( k9 E6 a( {. i4 B2 Q7 A* e1 l' y    delta = net.w2(:,1:end-1)'*DELTA.*dlogsig(hid_input,hid_out);2 w% r$ j( b: }% s; {
        %权值修改量9 X  ]: ]9 Y& E0 Z0 W* U3 S" @
        dWEX=DELTA*ou_input1';
    3 r% K0 S' t* {    dwex=delta*SampInEx';, D3 w) I% K) d5 {
        %修改权值,如果不是第一次修改,则使用动量因子
    : c: s: K2 m+ R    if i==1+ H3 T, D& ^! t7 @# v2 F9 ^8 @+ E+ O
            net.w2 = net.w2+eta*dWEX;
    7 B% Z) I/ |1 ]1 [% R" ^  D6 p        net.w1 = net.w1+eta*dwex;% X* P4 D' S* N. p: c! z
        else
    / v. T  ]1 G/ H& O- f  H, m% D/ A        net.w2 = net.w2+(1-mc)*eta*dWEX+mc*dWEXOld;0 N5 G& y9 O. {- j  {
            net.w1 = net.w1+(1-mc)*eta*dwex+mc*dwexOld;% C* i; M3 p) v9 `8 A! D! i% ~
        end
    + {$ B3 H% w; y4 o3 ^: \4 l( x. k   
    % F8 m- ~4 X/ b    %记录上一次的权值修改量3 r, J2 O: n  h
        dWEXOld = dWEX;
    5 z+ s  ]% |- b' v& d    dwexOld = dwex;
    $ f  q. _* q9 M: H- dend3 i  k' I/ V# v8 a7 [0 }! M( k
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-23 13:47 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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