²é¿´: 587  |  »Ø¸´: 2

΢Цȥ¼á³Ö

½ð³æ (ÕýʽдÊÖ)

[½»Á÷] Éñ¾­ÍøÂç ÒÑÓÐ2È˲ÎÓë

»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
2Â¥2013-10-12 16:21:12
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

leimin2008

гæ (ÕýʽдÊÖ)

¡ï
Сľ³æ: ½ð±Ò+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
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ ΢Цȥ¼á³Ö µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] ²ÄÁÏ270Çóµ÷¼Á 6+3 Eiiiio 2026-03-01 6/300 2026-03-02 19:16 by zhukairuo
[¿¼ÑÐ] ²ÄÁϵ÷¼Á +3 ºã˳×ÔÈ» 2026-03-02 3/150 2026-03-02 18:49 by L135790
[¿¼ÑÐ] һ־Ըɽ¶«´óѧ²ÄÁÏÓ뻯¹¤325Çóµ÷¼Á +5 °ë½ØµÄÊ«0927 2026-03-02 5/250 2026-03-02 18:37 by Ã÷ÁÁ9527
[¿¼ÑÐ] 0703 ×Ü·Ö319Çóµ÷¼Á +3 Xinyuu 2026-03-02 3/150 2026-03-02 17:20 by houyaoxu
[¿¼ÑÐ] ²ÄÁÏ»¯¹¤µ÷¼Á +12 ½ñÏIJ»ÏÄ 2026-03-01 14/700 2026-03-02 16:09 by ½ñÏIJ»ÏÄ
[¿¼ÑÐ] 0856»¯¹¤×¨Ë¶Çóµ÷¼Á +15 ¶­boxing 2026-03-01 15/750 2026-03-02 15:06 by »Î»Î²»Ðí»Î
[¿¼ÑÐ] 291 Çóµ÷¼Á +3 »¯¹¤2026½ì±ÏÒµÉ 2026-03-02 3/150 2026-03-02 12:55 by houyaoxu
[¿¼ÑÐ] 272Çóµ÷¼Á +7 ²Ä×ÏÓл¯ 2026-02-28 7/350 2026-03-02 12:48 by Î޼ʵIJÝÔ­
[»ù½ðÉêÇë] ³É¹ûϵͳ·ÃÎÊÁ¿´ó£¬Çë15·ÖÖÓºóÔÙ³¢ÊÔ¡£Óɴ˸øÄúÔì³ÉµÄ²»±ã£¬¾´ÇëÁ½⡣ +5 xhuama 2026-03-02 5/250 2026-03-02 12:34 by stidwellNK
[¿¼ÑÐ] ¹þ¹¤´ó¼ÆËã»úÁõ„ÂÍŶÓÕÐÉú +4 hit_aiot 2026-03-01 6/300 2026-03-02 11:53 by Ò»ÉùÎʺÃ
[¿¼ÑÐ] Çóµ÷¼Á +3 °¾Ò¹µÄèͷӥ 2026-03-02 3/150 2026-03-02 11:45 by Áõ±ø
[¿¼ÑÐ] 276Çóµ÷¼Á +4 ·lyh123 2026-02-28 5/250 2026-03-02 11:20 by yuchj
[¿¼ÑÐ] 295Çóµ÷¼Á +8 19171856320 2026-02-28 8/400 2026-03-02 11:19 by yuchj
[¿¼ÑÐ] 279Çóµ÷¼Á +3 dua1 2026-03-01 4/200 2026-03-02 00:23 by ´óÁ³µ°×Ó
[»ù½ðÉêÇë] ³É¹ûϵͳ·ÃÎÊÁ¿´ó£¬ÇëһСʱºóÔÙ³¢ÊÔ¡£---NSFCɶʱºòºÃŶ£¬ÒѾ­Á½ÌìÕâÑùÁË +4 NSFC2026ÎÒÀ´ÁË 2026-02-28 4/200 2026-03-01 22:37 by ÌúÃÅ˨
[¿¼ÑÐ] 0856²ÄÁÏÇóµ÷¼Á +11 hyf hyf hyf 2026-02-28 12/600 2026-03-01 18:57 by 18137688336
[¿¼ÑÐ] 328Çóµ÷¼Á +3 aaadim 2026-03-01 5/250 2026-03-01 17:29 by njzyff
[¿¼ÑÐ] 285Çóµ÷¼Á +8 ÂúÍ·´óº¹µÄѧÉú 2026-02-28 8/400 2026-03-01 16:47 by caszguilin
[¿¼ÑÐ] Çóµ÷¼Á +6 repeatt?t 2026-02-28 6/300 2026-03-01 14:37 by Sakura»æ
[¿¼ÑÐ] ѰÕÒµ÷¼Á +4 LYidhsjabdj 2026-02-28 4/200 2026-03-01 10:56 by sunny81
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û