全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4284
推到 Plurk!
推到 Facebook!

類神經網路

答題得分者是:franklin323i
yana125
一般會員


發表:16
回覆:17
積分:6
註冊:2006-10-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-05 16:46:52 IP:203.68.xxx.xxx 訂閱
以下是用類神經倒傳遞 去學習XOR閘 的程式 如果把輸入改成AND 或 OR 閘 的話 可以成功 但是用XOR就會失敗 不知道問題出在哪??? 我有用ㄧ個機制 就是如果會收斂的話 他會自動停下來 如果一直無法收歛 他會一直算下去  各位高手 可以先執行正確的AND看看 他可以收斂    <textarea class="cpp" rows="10" cols="60" name="code"> #include #include #include <math.h> #include float hardlims(float x); float hardlim(float x); int main() { double X[2],H[2],T[4],Y; //X輸入 H隱藏層 T期望輸出 Y輸出 double W_xh[2][2],W_hy[2],dW_xh[2][2],dW_hy[2]; //W_xh輸入到隱藏層的權重 dW_xh修正權重值 double Q_h[2],Q_y,dQ_h[2],dQ_y; //Q_h偏權值 double delta_y,delta_h[2],sum,eta=0.1; //delta_y差距量 int i,h,a,delta_K=1; int Ntrain=4,Icycle,Ncycle=100; double test_X[4][2]={{-1,-1},{-1,1},{1,-1},{1,1}}; //輸入 double test_T[4]={0,0,0,1}; //AND期望輸出 若改成test_T[4]=(0,1,1,0};就會失敗 //初始化W,Q //srand((unsigned)time(NULL)); for(i=0;i<2;i ) { for(h=0;h<2;h ) { W_xh[i][h]=1; dW_xh[i][h]=0.0; } } W_hy[0]=1; W_hy[1]=1; dW_hy[0]=0.0; dW_hy[1]=0.0; Q_h[0]=1; Q_h[1]=1; Q_y=1; dQ_h[0]=0.0; dQ_h[1]=0.0; dQ_y=0.0; Icycle=0; //開始循環 //for(Icycle=0;Icycle0) return 1; else return -1; } float hardlim(float x) { if(x>0) return 1; else return 0; } </textarea>
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-13 12:43:42 IP:61.62.xxx.xxx 訂閱
您好:
Perceptron在學理上是無法解決XOR的學習問題,建議使用Support vector machine就可以解決了。

franklin323i
一般會員


發表:0
回覆:1
積分:5
註冊:2007-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-08-13 09:05:48 IP:221.169.xxx.xxx 訂閱
XOR 使用倒傳遞類神經網路,我有在dev. c上模擬成功過了,建議可以試著增加神經元數量,以期完成更複雜的運算。
在測試上,我這邊隱藏層使用四個神經元就可以完成了,學習次數100次。
系統時間:2024-05-02 15:15:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!