| ²é¿´: 587 | »Ø¸´: 2 | ||
΢Цȥ¼á³Ö½ð³æ (ÕýʽдÊÖ)
|
[½»Á÷]
Éñ¾ÍøÂç ÒÑÓÐ2È˲ÎÓë
|
|
2Â¥2013-10-12 16:21:12
leimin2008
гæ (ÕýʽдÊÖ)
- Ó¦Öú: 81 (³õÖÐÉú)
- ½ð±Ò: 2526.2
- É¢½ð: 602
- ºì»¨: 13
- Ìû×Ó: 587
- ÔÚÏß: 276.5Сʱ
- ³æºÅ: 2695364
- ×¢²á: 2013-10-02
- רҵ: ¿ØÖÆÂÛÖеÄÊýѧ·½·¨
¡ï
Сľ³æ: ½ð±Ò+0.5, ¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
Сľ³æ: ½ð±Ò+0.5, ¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
|
#include "iostream.h" #include "iomanip.h" #define N 20 //ѧϰÑù±¾¸öÊý #define IN 1 //ÊäÈë²ãÉñ¾ÔªÊýÄ¿ #define HN 8 //Òþ²ãÉñ¾ÔªÊýÄ¿ #define ON 1 //Êä³ö²ãÉñ¾ÔªÊýÄ¿ double P[IN]; //µ¥¸öÑù±¾ÊäÈëÊý¾Ý double T[ON]; //µ¥¸öÑù±¾½ÌʦÊý¾Ý double W[HN][IN]; //ÊäÈë²ãÖÁÒþ²ãȨֵ double V[ON][HN]; //Òþ²ãÖÁÊä³ö²ãȨֵ double X[HN]; //Òþ²ãµÄÊäÈë double Y[ON]; //Êä³ö²ãµÄÊäÈë double H[HN]; //Òþ²ãµÄÊä³ö double O[ON]; //Êä³ö²ãµÄÊä³ö double sita[HN]; //Òþ²ãµÄãÐÖµ double gama[ON]; //Êä³ö²ãµÄãÐÖµ double err_m[N]; //µÚm¸öÑù±¾µÄ×ÜÎó²î double alpha; //Êä³ö²ãÖÁÒþ²ãµÄѧϰЧÂÊ double beta; //Òþ²ãÖÁÊäÈë²ãѧϰЧÂÊ //¶¨ÒåÒ»¸ö·ÅѧϰÑù±¾µÄ½á¹¹ struct { double input[IN]; double teach[ON]; }Study_Data[N][IN]; /////////////////////////// //³õʼ»¯È¨¡¢ãÐÖµ×Ó³ÌÐò///// /////////////////////////// initial() { float sgn; float rnd; int i,j; //Òþ²ãȨ¡¢ãÐÖµ³õʼ»¯// { //sgn=pow((-1),random(100)); sgn=rand(); rnd=sgn*(rand()%100); W[j]= rnd/100;//Òþ²ãȨֵ³õʼ»¯¡£ } //randomize(); { //sgn=pow((-1),random(1000)); sgn=rand(); rnd=sgn*(rand()%1000); sita[j]= rnd/1000;//Öмä²ããÐÖµ³õʼ»¯ cout<<"sita"<<sita[j]<<endl; } //Êä³ö²ãȨ¡¢ãÐÖµ³õʼ»¯// //randomize(); for (int k=0;k<ON;k++) for (int j=0;j<HN;j++) { //sgn=pow((-1),random(1000)); sgn=rand(); rnd=sgn*(rand()%1000); V[k][j]=rnd/1000;//µÚm¸öÑù±¾Êä³ö²ãȨֵ³õʼ»¯ } //randomize(); { //sgn=pow((-1),random(10)); sgn=rand(); rnd=sgn*(rand()%10); gama[k]=rnd/10;//Êä³ö²ããÐÖµ³õʼ»¯ cout<<"gama[k]"<<endl; } return 1; }//×Ó³ÌÐòinitial()½áÊø //////////////////////////////// ////µÚm¸öѧϰÑù±¾ÊäÈë×Ó³ÌÐò/// /////////////////////////////// input_P(int m) { for (int i=0;i<IN;i++) P=Study_Data[m]->input; //»ñµÃµÚm¸öÑù±¾µÄÊý¾Ý //cout<<"µÚ"< //fprintf(fp,"µÚ%d¸öÑù±¾µÄѧϰÊäÈ룺 //P[%d]=%f\n",m,P); return 1; }//×Ó³ÌÐòinput_P(m£©½áÊø ///////////////////////////// ////µÚm¸öÑù±¾½ÌʦÐźÅ×Ó³ÌÐò// ///////////////////////////// input_T(int m) { for (int k=0;k<m;k++) T[k]=Study_Data[m]->teach[k]; //cout<<"µÚ"< //fprintf(fp,"µÚ%d¸öÑù±¾µÄ½ÌʦÐźţºT[%d]=%f\n",m,T[k]); return 1; }//×Ó³ÌÐòinput_T(m)½áÊø ///////////////////////////////// //Òþ²ã¸÷µ¥ÔªÊäÈë¡¢Êä³öÖµ×Ó³ÌÐò/// ///////////////////////////////// H_I_O(){ double sigma; int i,j; for (j=0;j<HN;j++) sigma=0.0; for (i=0;i<IN;i++) sigma+=W[j]*P;//ÇóÒþ²ãÄÚ»ý } X[j]=sigma - sita;//ÇóÒþ²ã¾»ÊäÈë H[j]=1.0/(1.0+exp(-X[j]));//ÇóÒþ²ãÊä³ö } return 1; }//×Ó³ÌÐòH_I_O()½áÊø /////////////////////////////////// //Êä³ö²ã¸÷µ¥ÔªÊäÈë¡¢Êä³öÖµ×Ó³ÌÐò/// /////////////////////////////////// O_I_O() { double sigma; for (int k=0;k<ON;k++) sigma=0.0; for (int j=0;j<HN;j++) sigma+=V[k][j]*H[k];//ÇóÊä³ö²ãÄÚ»ý } Y[k]=sigma-gama[k]; //ÇóÊä³ö²ã¾»ÊäÈë O[k]=1.0/(1.0+exp(-Y[k]));//ÇóÊä³ö²ãÊä³ö } return 1; }//×Ó³ÌÐòO_I_O()½áÊø //////////////////////////////////// //Êä³ö²ãÖÁÒþ²ãµÄÒ»°ã»¯Îó²î×Ó³ÌÐò//// //////////////////////////////////// double d_err[ON]; Err_O_H(int m) { double abs_err[ON];//ÿ¸öÑù±¾µÄ¾ø¶ÔÎó²î¶¼ÊÇ´Ó0¿ªÊ¼µÄ double sqr_err=0;//ÿ¸öÑù±¾µÄƽ·½Îó²î¼ÆËã¶¼ÊÇ´Ó0¿ªÊ¼µÄ //for (int output=0;output<ON;output++) //output??? for (int k=0;k<ON;k++) abs_err[k]=T[k]-O[k]; //ÇóµÚm¸öÑù±¾ÏµĵÚk¸öÉñ¾ÔªµÄ¾ø¶ÔÎó²î sqr_err+=(abs_err[k])*(abs_err[k]);//ÇóµÚm¸öÑù±¾ÏÂÊä³ö²ãµÄƽ·½Îó²î d_err[k]=abs_err[k]*O[k]*(1.0-O[k]);//d_err[k]Êä³ö²ã¸÷Éñ¾ÔªµÄÒ»°ã»¯Îó²î } err_m[m]=sqr_err/2;//µÚm¸öÑù±¾ÏÂÊä³ö²ãµÄƽ·½Îó²î/2=µÚm¸öÑù±¾µÄ¾ù·½Îó²î return 1; }//×Ó³ÌÐòErr_O_H(m)½áÊø //////////////////////////////////// //Òþ²ãÖÁÊäÈë²ãµÄÒ»°ã»¯Îó²î×Ó³ÌÐò//// //////////////////////////////////// double e_err[HN]; Err_H_I(){ double sigma; //for (int hidden=0;hidden for (int j=0;j<HN;j++) sigma=0.0; for (int k=0;k<ON;k++) sigma=d_err[k]*V[k][j]; } e_err[j]=sigma*H[j]*(1-H[j]);//Òþ²ã¸÷Éñ¾ÔªµÄÒ»°ã»¯Îó²î } return 1; }//×Ó³ÌÐòErr_H_I()½áÊø //////////////////////////////////////////////////////// //Êä³ö²ãÖÁÒþ²ãµÄȨֵµ÷Õû¡¢Êä³ö²ããÐÖµµ÷Õû¼ÆËã×Ó³ÌÐò////// //////////////////////////////////////////////////////// Delta_O_H(int m,FILE* fp) { for (int k=0;k<ON;k++) for (int j=0;j<HN;j++) //cout<<"µÚ"< fprintf(fp,"µÚ%d¸öÑù±¾Ê±µÄÊä³ö²ãÖÁÒþ²ãµÄȨֵΪ£º%f\n",m,W[k][j]); V[k][j]+=alpha*d_err[k]*H[j];//Êä³ö²ãÖÁÒþ²ãµÄȨֵµ÷Õû } gama[k]+=alpha*d_err[k];//Êä³ö²ãÖÁÒþ²ãµÄãÐÖµµ÷Õû } return 1; }//×Ó³ÌÐòDelta_O_H()½áÊø ///////////////////////////////////////////////////// //Òþ²ãÖÁÊäÈë²ãµÄȨֵµ÷Õû¡¢Òþ²ããÐÖµµ÷Õû¼ÆËã×Ó³ÌÐò///// ///////////////////////////////////////////////////// Delta_H_I(int m,FILE* fp) { for (int j=0;j<HN;j++) for (int i=0;i<IN;i++) //cout<<"µÚ"< fprintf(fp,"µÚ%d¸öÑù±¾Ê±µÄÊä³ö²ãÖÁÒþ²ãµÄȨֵΪ£º%f\n",m,V[j]); W[j]+=beta*e_err[j]*P;//Òþ²ãÖÁÊäÈë²ãµÄȨֵµ÷Õû } sita[j]+=beta*e_err[j]; } return 1; }//×Ó³ÌÐòDelta_H_I()½áÊø ///////////////////////////////// //N¸öÑù±¾µÄÈ«¾ÖÎó²î¼ÆËã×Ó³ÌÐò//// ///////////////////////////////// double Err_Sum() { double total_err=0; for (int m=0;m<N;m++) total_err+=err_m[m];//ÿ¸öÑù±¾µÄ¾ù·½Îó²î¼ÓÆðÀ´¾Í³ÉÁËÈ«¾ÖÎó²î } return 1; }//×Ó³ÌÐòErr_sum()½áÊø /**********************/ /**³ÌÐòÈë¿Ú£¬¼´Ö÷³ÌÐò**/ /**********************/ main() { FILE *fp; double sum_err; int study;//ѵÁ·´ÎÊý if ((fp=fopen("bp.txt","a+" )==NULL){ printf("²»ÄÜ´´½¨bp.txtÎļþ!\n" ;exit(1); } cout<<"ÇëÊäÈëÊä³ö²ãµ½Òþº¬²ãѧϰЧÂÊ: alpha=\n"; cin>>alpha; cout<<"ÇëÊäÈëÒþº¬²ãµ½ÊäÈë²ãѧϰЧÂÊ: beta=\n"; cin>>beta; int study=0; //ѧϰ´ÎÊý double Pre_error ; //Ô¤¶¨Îó²î cout<<"ÇëÊäÈëÔ¤¶¨Îó²î: Pre_error= \n"; cin>>Pre_error; int Pre_times; cout<<"ÇëÊäÈëÔ¤¶¨×î´óѧϰ´ÎÊý re_times=\n";cin>>Pre_times; cout<<"ÇëÊäÈëѧϰÑù±¾Êý¾Ý\n"; { for (int m=0;m<N;m++) cout<<"ÇëÊäÈëµÚ"<<m+1<<"×éѧϰÑù±¾"<<endl; for (int i=0;i<IN;i++) cin>>Study_Data[m]->input; } { for (int m=0;m<N;m++) cout<<"ÇëÊäÈëµÚ"<<m+1<<"×é½ÌʦÑù±¾"<<endl; for (int k=0;k<ON;k++) cin>>Study_Data[m]->teach[k]; } initial(); //Òþ²ã¡¢Êä³ö²ãȨ¡¢ãÐÖµ³õʼ»¯ (1) do { ++study; ///??? for (int m=0;m<N;m++) { input_P(m); //ÊäÈëµÚm¸öѧϰÑù±¾ (2) input_T(m);//ÊäÈëµÚm¸öÑù±¾µÄ½ÌʦÐźŠ(3) H_I_O(); //µÚm¸öѧϰÑù±¾Òþ²ã¸÷µ¥ÔªÊäÈë¡¢Êä³öÖµ (4) O_I_O(); //µÚm¸öѧϰÑù±¾Êä³ö²ã¸÷µ¥ÔªÊäÈë¡¢Êä³öÖµ (5) Err_O_H(m); //µÚm¸öѧϰÑù±¾Êä³ö²ãÖÁÒþ²ãÒ»°ã»¯Îó²î (6) Err_H_I(); //µÚm¸öѧϰÑù±¾Òþ²ãÖÁÊäÈë²ãÒ»°ã»¯Îó²î (7) Delta_O_H(m,fp); //µÚm¸öѧϰÑù±¾Êä³ö²ãÖÁÒþ²ãȨãÐÖµµ÷Õû¡¢ÐÞ¸Ä (8) Delta_H_I(m,fp); //µÚm¸öѧϰÑù±¾Òþ²ãÖÁÊäÈë²ãȨãÐÖµµ÷Õû¡¢ÐÞ¸Ä (9) } //È«²¿Ñù±¾ÑµÁ·Íê±Ï sum_err=Err_Sum(); //È«²¿Ñù±¾È«¾ÖÎó²î¼ÆËã (10) { cout<<"µÚ"<<study<<"´ÎѧϰµÄ¾ù·½Îó²îΪ"<<sum_err<<endl; fprintf(fp,"µÚ%d´ÎѧϰµÄ¾ù·½Îó²îΪ£º%f\n",study,sum_err); } while (sum_err > Pre_error) //or(study { //N¸öÑù±¾È«¾ÖÎó²îСÓÚÔ¤¶¨Îó²î·ñ£¿ СÓÚÔòÍ˳ö (11) cout<<"ÍøÂçÒѾѧϰÁË"<<study<<"´Î,ѧϰµÄ¾ù·½Îó²îΪ"<<sum_err<<endl; fprintf(fp,"ÍøÂçÒѾѧϰÁË%d´Î£¬ÏÖÔÚµÄÈ«¾ÖÎó²îΪ£º%f\n",study,total_err); fclose(fp); } char s; cout<<"ÇëËæ±ãÊäÈëÒ»¸ö×Ö·û£¬°´»Ø³µÍ˳ö³ÌÐò£¡\n"; cin>>s; return 1; } |
3Â¥2013-10-15 09:49:35













»Ø¸´´ËÂ¥
)==NULL)
re_times=\n";
6