📄 bp.~cpp
字号:
}
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 + -