[討論] 程式不能繼續往迴圈執行下去?已回收
一直找不到錯誤,請前輩開示點出問題,感謝
程式上半部都可以執行,但是等到要進while迴圈時就下不去
檢查的時候發現迴圈下第一個變數 d5 就沒有顯示在工作欄右邊是視窗中
程式條件是上半部y = 0.386 然後進入y< 0.1的迴圈(我希望是越接近於0越好)
最後 n 則是告訴我自從進到迴圈後總共跑了幾次
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 = 1;
n = 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.1
d5 = y*(1-y)*(t-y);
d3 = h1*(1-h1)*(w35*d5);
d4 = h2*(1-h2)*(w45*d5);
neww35 = ln*d5*h1;
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));
n = n+1;
end
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.96.47.236
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章