使用BP網路 跑Curve fitting 會出現overflow |
尚未結案
|
emptiness
一般會員 發表:2 回覆:0 積分:0 註冊:2007-11-08 發送簡訊給我 |
[code delphi] void __fastcall TForm1::Button1Click(TObject *Sender) //以下是訓練網路鈕(使用315組資料做訓練) { for(k=0;k<3000;k ) //訓練次數 { CGauge1->MaxValue = 1000; CGauge1->MinValue = 0; CGauge1->Progress = k 1; e=0; for(int i=0;i net3=0; for(int j=0;j net[j]=w1[0][j]*p1[i] b[j]; //輸入值在隱藏層轉換 y[j]=1/(1 exp(-net[j])); } for(int j=0;j net3 =w2[j][1]*y[j]; } y3=net3 b1; //輸出值 a3=y3*(1-y3)*(p2[i]-y3); //輸出層差距量 for(int j=0;j a[j]=w2[j][1]*a3*y[j]*(1-y[j]); //隱藏層差距量 ///更新輸出層權重 w2[j][1]=w2[j][1] lr*a3*y[j] w10[j][1]*momentum; w10[j][1]=lr*a3*y[j] w10[j][1]*momentum; //更新隱藏層權重層 w1[0][j]=w1[0][j] lr*a[j]*p1[i] w11[0][j]*momentum; w11[0][j]=lr*a[j]*p1[i] w11[0][j]*momentum; //更新隱藏層偏權值 b[j]=b[j] lr*a[j] b_1[j]*momentum; b_1[j]=lr*a[j] b_1[j]*momentum; } //更新輸出層權重 b1=b1 lr*a3 b4*momentum; b4=lr*a3 b4*momentum; ft=y3-p2[i]; e=e pow(ft,2); //SSE } Series3->AddXY(k,e/315,"",clRed); //SHOW出X軸為訓練次數.Y軸為MSE Application->ProcessMessages(); } } [/code] 請教各位大大,我在使用BP網路時,輸出層使用purelin函數,隱藏層使用logsig函數,在跑的時候,會出現overflow,在debug時候,發現幾乎每個值都爆掉(E 100..),思考很久,還是不了解為何,希望各位大大能幫忙看一下,感激不盡 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |