[問題] 想請問一下倒傳遞m檔案無窮迴圈?已回收

看板MATLAB作者 (白開水)時間15年前 (2010/11/05 02:35), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
工具箱我還是弄不熟最後用m檔案先代替,但是寫完後總覺得好像在跑無窮迴圈? 我的第一次輸出y值是0.386多,但是希望趨近於0,所以還要讓他繼續累計新變數 再次計算達到y等於0,可否指導小弟看是哪裡觀念錯誤,謝謝. 程式如下: x1 = -1; % 連結值 x2 = -1; w13 = 1; w23 = -1; w14 = -1; w24 = 1; w35 = 1; w45 = 1; o3 = 1; % 閥值 o4 = 1; o5 = 1; ln = 10; %學習函數 t = 0; %正確輸出值 % 最初求輸出y值程式,希望是等於0 net3 = (w13*x1)+(w23*x2)-o3; net4 = (w14*x1)+(w24*x2)-o4; h1 = 1/(1+exp(-net3)); h2 = 1/(1+exp(-net4)); net5 = (w35*h1)+(w45*h2)-o5; y = 1/(1+exp(-net5)); %如果不是等於0(小數也要接近),就啟動以下程式做連結值更動 while y < 0.99; d5 = y*(1-y)*(t-y); d3 = h1*(1-h1)*(w35*d5); d4 = h2*(1-h2)*(w45*d5); neww35 = ln*d5*h1; neww45 = ln*d5*h2; neww13 = ln*d3*x1; neww23 = ln*d3*x2; newo5 = -ln*d5; newo4 = -ln*d4; newo3 = -ln*d3; neww14 = ln*d4*x1; neww24 = ln*d4*x2; % 更正後的權值(連結值) 和 閥值 w35 = w35 + neww35; w45 = w45 + neww45; w13 = w13 + neww13; w23 = w23 + neww23; w14 = w14 + neww14; w24 = w24 + neww24; o5 = o5 + newo5; o4 = o4 + newo4; o3 = o3 + newo3; % 使用更正值後重新跑原始檔案 net3 = (w13*x1)+(w23*x2)-o3; net4 = (w14*x1)+(w24*x2)-o4; h1 = 1/(1+exp(-net3)); h2 = 1/(1+exp(-net4)); net5 = (w35*h1)+(w45*h2)-o5; y = 1/(1+exp(-net5)); end -- 如果上帝看到有人在床上,因為沉浸在過去的回憶裡 而做出自我陶醉的表情,請不要嘲笑他。 因為他是非常認真的。 人のセックスを笑うな -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.172.216

11/05 02:53, , 1F
你希望y趨近於0,while的條件卻設y<0.99....
11/05 02:53, 1F

11/05 04:28, , 2F
因為課本上Y第一次是0.3多,然後說還要繼續訓練,所以
11/05 04:28, 2F

11/05 04:31, , 3F
但是若給y<0的條件,程式跑完數值還是沒有變化
11/05 04:31, 3F

11/05 04:33, , 4F
所以我才那悶到底要怎給程式下後續條件還有RUN的次數
11/05 04:33, 4F

11/05 17:31, , 5F
(y)^2<ε,ε<0.1^6 之類的 自己定義要多近
11/05 17:31, 5F
文章代碼(AID): #1CqlqFNq (MATLAB)