⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bp.~cpp

📁 BP批处理源代码
💻 ~CPP
📖 第 1 页 / 共 2 页
字号:
}



void output_matrix(int a,int b,int c,int d,int e)
{
 int i,j,k,m;
 String file_name,data_stream,temp,s_a;
 FILE *Fstr;
 char *Cstr;
 char f_c;
 Form1->SaveDialog1->Execute ();
 file_name=Form1->SaveDialog1->FileName;
 file_name=file_name+".txt";
 data_stream="The matrix of Input layer to hide layer\n\n";
 for(i=0;i<b;i++)
    {
     for(j=0;j<c;j++)
        {
         temp=FloatToStr(Form1->input_to_hide[i][j]);
         data_stream=data_stream+"     "+temp;
        }
     data_stream=data_stream+"\n";
    }
 if(a==1)
   {
    data_stream=data_stream+"\n"+"The matrix of hide layer to output layer\n\n";
    for(i=0;i<c;i++)
       {
        for(j=0;j<e;j++)
           {
            temp=FloatToStr(Form1->hide_to_output[i][j]);
            data_stream=data_stream+"     "+temp;
           }
        data_stream=data_stream+"\n";
       }
   }
 else
     {
      data_stream=data_stream+"\n"+"The matrix of hide layer to hide layer\n\n";
      for(i=0;i<c;i++)
         {
          for(j=0;j<d;j++)
             {
              temp=FloatToStr(Form1->hide_to_hide[i][j]);
              data_stream=data_stream+"     "+temp;
             }
          data_stream=data_stream+"\n";
         }
      data_stream=data_stream+"\n"+"The matrix of hide layer to output layer\n\n";
      for(i=0;i<d;i++)
         {
          for(j=0;j<e;j++)
             {
              temp=FloatToStr(Form1->hide_to_output[i][j]);
              data_stream=data_stream+"     "+temp;
             }
          data_stream=data_stream+"\n";
         }
     }
  data_stream=data_stream+"\n"+"The factor of Untiary\n\n";
  for(i=0;i<e;i++)
     {
      temp=FloatToStr(Form1->output_untiary[i]);
      data_stream=data_stream+temp+"\n";
     }
 Form1->RichEdit1->Text =data_stream;
 i=data_stream.Length();
if(!(file_name==" "))
  {
   Fstr=fopen(file_name.c_str(),"w");
   j=0;
   while((i-1024)>=0)
        {
         s_a=data_stream.SubString((1+j*1024),1024);
         j=j+1;
         i=i-1024;
         Cstr=s_a.c_str();
         for(k=0;k<1024;k++)
            {
             f_c=*(Cstr+k);
             fputc(f_c,Fstr);
            }
        }
   m=i%1024;
   if(m>0)
     {
      s_a=data_stream.SubString((1+(j*1024)),m);
      Cstr=s_a.c_str();
      for(k=0;k<m;k++)
         {
          f_c=*(Cstr+k);
          fputc(f_c,Fstr);
         }
     }

   fclose(Fstr);

 }
}
void forward_cal(int a,int b,int c,int d,int e)
{
 int i,j,k;
 for(i=0;i<c;i++)
    {
     Form1->input_hide[i]=0.0;
     for(j=0;j<b;j++)
        {
         Form1->input_hide[i]=Form1->input_hide[i]+Form1->in_put[a][j]*Form1->input_to_hide[j][i];
        }
     Form1->input_hide[i]=1/(1+exp(-Form1->input_hide[i]));
    }
 if(d==0)
   {
    for(i=0;i<e;i++)
       {
        Form1->hide_output[i]=0.0;
        for(j=0;j<c;j++)
           {
            Form1->hide_output[i]=Form1->hide_output[i]+Form1->input_hide[j]*Form1->hide_to_output[j][i];
           }
        Form1->hide_output[i]=1/(1+exp(-Form1->hide_output[i]));
       }
   }
 else
     {
      for(i=0;i<d;i++)
         {
          Form1->hide_hide[i]=0.0;
          for(j=0;j<c;j++)
             {
              Form1->hide_hide[i]=Form1->hide_hide[i]+Form1->input_hide[j]*Form1->hide_to_hide[j][i];
             }
          Form1->hide_hide[i]=1/(1+exp(-Form1->hide_hide[i]));
         }
      for(i=0;i<e;i++)
         {
          Form1->hide_output[i]=0.0;
          for(j=0;j<d;j++)
             {
              Form1->hide_output[i]=Form1->hide_output[i]+Form1->hide_hide[j]*Form1->hide_to_output[j][i];
             }
          Form1->hide_output[i]=1/(1+exp(-Form1->hide_output[i]));
         }
     }

}
void back_cal_grade(int a,int b,int c,int d)
{
 int i,j;
 double temp;
 for(i=0;i<d;i++)
    {
     Form1->temp_output_grade[i]=Form1->hide_output[i]*(1-Form1->hide_output[i])*(Form1->output[a][i]-Form1->hide_output[i]);
    }
 if(c==0)
   {
    for(i=0;i<b;i++)
         {
          temp=0.0;
          for(j=0;j<d;j++)
             {
              temp=temp+Form1->temp_output_grade[j]*Form1->hide_to_output[i][j];
             }
          Form1->temp_input_grade[i]=temp*Form1->input_hide[i]*(1-Form1->input_hide[i]);
         }

   }
 else
     {
      for(i=0;i<c;i++)
         {
          temp=0.0;
          for(j=0;j<d;j++)
             {
              temp=temp+Form1->temp_output_grade[j]*Form1->hide_to_output[i][j];
             }
          Form1->temp_hide_grade[j]=temp*Form1->hide_hide[i]*(1-Form1->hide_hide[i]);
         }
      for(i=0;i<b;i++)
         {
          temp=0.0;
          for(j=0;j<c;j++)
             {
              temp=temp+Form1->temp_hide_grade[j]*Form1->hide_to_hide[i][j];
             }
          Form1->temp_input_grade[i]=temp*Form1->input_hide[i]*(1-Form1->input_hide[i]);
         }
     }
}
void back_cal(int a,int b, int c,int d)
{
 int i,j;
 if(c==0)
   {
    for(i=0;i<b;i++)
       {
        for(j=0;j<d;j++)
           {
            Form1->hide_ver_output[i][j]=Form1->learn_space* Form1->batch_output_grade[j]*Form1->input_hide[i];
            if(Form1->pre_input_ver_hide[0][0]==123456.0)
                {
                 Form1->pre_hide_ver_output[i][j]=Form1->hide_ver_output[i][j];
                }
             Form1->hide_ver_output[i][j]=Form1->hide_ver_output[i][j]+Form1->factor*Form1->pre_hide_ver_output[i][j];
             Form1->hide_to_output[i][j]=Form1->hide_to_output[i][j]+Form1->hide_ver_output[i][j];
             Form1->pre_hide_ver_output[i][j]=Form1->hide_ver_output[i][j];
           }
       }
    for(i=0;i<a;i++)
         {
          for(j=0;j<b;j++)
             {
              Form1->input_ver_hide[i][j]=Form1->learn_space*Form1->batch_input_grade[j]*Form1->in_put[Form1->sample_num -1][i];
              if(Form1->pre_input_ver_hide[0][0]==123456.0)
                {
                 Form1->pre_input_ver_hide[i][j]=Form1->input_ver_hide[i][j];
                }
              Form1->input_ver_hide[i][j]=Form1->input_ver_hide[i][j]+Form1->factor*Form1->pre_input_ver_hide[i][j];
              Form1->input_to_hide[i][j]=Form1->input_to_hide[i][j]+Form1->input_ver_hide[i][j];
              Form1->pre_input_ver_hide[i][j]=Form1->input_ver_hide[i][j];
             }
         }
   }
 else
     {
      for(i=0;i<c;i++)
         {
          for(j=0;j<d;j++)
             {
              Form1->hide_ver_output[i][j]=Form1->learn_space* Form1->batch_output_grade[j]*Form1->hide_hide[i];
              if(Form1->pre_input_ver_hide[0][0]==123456.0)
                {
                 Form1->pre_hide_ver_output[i][j]=Form1->hide_ver_output[i][j];
                }
              Form1->hide_ver_output[i][j]=Form1->hide_ver_output[i][j]+Form1->factor*Form1->pre_hide_ver_output[i][j];
              Form1->hide_to_output[i][j]=Form1->hide_to_output[i][j]+Form1->hide_ver_output[i][j];
              Form1->pre_hide_ver_output[i][j]=Form1->hide_ver_output[i][j];
             }
         }
      for(i=0;i<b;i++)
         {
          for(j=0;j<c;j++)
             {
              Form1->hide_ver_hide[i][j]=Form1->learn_space*Form1->batch_hide_grade[j]*Form1->input_hide[i];
              if(Form1->pre_input_ver_hide[0][0]==123456.0)
                {
                 Form1->pre_hide_ver_hide[i][j]=Form1->hide_ver_hide[i][j];
                }
              Form1->hide_ver_hide[i][j]=Form1->hide_ver_hide[i][j]+Form1->factor*Form1->pre_hide_ver_hide[i][j];
              Form1->hide_to_hide[i][j]=Form1->hide_to_hide[i][j]+Form1->hide_ver_hide[i][j];
              Form1->pre_hide_ver_hide[i][j]=Form1->hide_ver_hide[i][j];
             }
         }
      for(i=0;i<a;i++)
         {
          for(j=0;j<b;j++)
             {
              Form1->input_ver_hide[i][j]=Form1->learn_space*Form1->batch_input_grade[j]*Form1->in_put[Form1->sample_num -1][i];
              if(Form1->pre_input_ver_hide[0][0]==123456.0)
                {
                 Form1->pre_input_ver_hide[i][j]=Form1->input_ver_hide[i][j];
                }
              Form1->input_ver_hide[i][j]=Form1->input_ver_hide[i][j]+Form1->factor*Form1->pre_input_ver_hide[i][j];
              Form1->input_to_hide[i][j]=Form1->input_to_hide[i][j]+Form1->input_ver_hide[i][j];
              Form1->pre_input_ver_hide[i][j]=Form1->input_ver_hide[i][j];
             }
         }
     }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -