• 大小: 109KB
    文件类型: .rar
    金币: 2
    下载: 6 次
    发布日期: 2021-06-16
  • 语言: C/C++
  • 标签: RBF  神经网络  C++  源码  

资源简介

RBF神经网络和BP神经网络的C++实现算法

资源截图

代码片段和文件信息

#include“bp_rbf.h“
 double randnumber()//-0.1~0.1的随机函数 
{
return (sin(rand())/10) ;
}
//求某个节点的输出值
double f(int nodeint layer){
double sum=0;
for (int node2=0;node2yer-1];node2++)
{
    sum=sum+w[layer][node][node2]*u[layer-1][node2];
}
sum=1.0/(1+exp(0-sum));
return sum;
}
//求误差函数对u的导数
double gf(int layerint node){
double sum=0;
for (int m=0;myer+1];m++)
sum=sum+e[layer+1][m]*u[layer+1][m]*(1-u[layer+1][m])*w[layer+1][m][node];
return sum;
}

//求前馈
void feed_forward()//前馈输出值
{
for (int layer=1;layer<=2;layer++)
 for(int node=0;nodeyer];node++)
 u[layer][node]=f(nodelayer);
}
//求梯度
void compute_gradient()
{
for (int layer=2;layer>0;layer--)
{
  for(int node=0;nodeyer];node++)
  {
  if (layer==2) e[2][node]=u[2][node]-output[node];
  else e[layer][node]=gf(layernode);
  }

  for (int j=0;jyer];j++)
  for(int i=0;iyer-1];i++)
  {
                g[layer][j][i]=e[layer][j]*u[layer][j]*(1.0-u[layer][j])*u[layer-1][i];  
        
  }
}
}
//修改权值
void update_weights()
{
for (int layer=1;layer<=2;layer++)
     for (int j=0;jyer];j++)
     for(int i=0;iyer-1];i++)
{
 temp_w_1[layer][j][i]=w[layer][j][i];
       w[layer][j][i]=w[layer][j][i]-STUDY_SPEED*g[layer][j][i]+ALPHA*delta_w[layer][j][i];
   temp_w_2[layer][j][i]=w[layer][j][i];
   delta_w[layer][j][i]=temp_w_2[layer][j][i]-temp_w_1[layer][j][i];
}

}
double erro()//误差
{
double sum=0;

 sum=pow(fabs(u[2][0]-output[0])2)+pow(fabs(u[2][1]-output[1])2)+pow(fabs(u[2][2]-output[2])2);

return sum;
}
//////////初始化,装载样例
void initial(FILE *fp)
{

 if(feof(fp)) 
 {
 rewind(fp);
  k_k=(++k_k)%7;
  if(!k_k)  fprintf(fpwucha“\n“);
fprintf(fpwucha“%16f“wucha);
 wucha=0;
 }
 input[0]=1.0;
for(int i=1;i fscanf(fp“%f“input+i);
 
for(i=0;i       fscanf(fp“%d“output+i);
// cout< //////////////////////至此读出一个样本的数据(inputoutput);
for (int m=0;m    u[0][m]=input[m];


}
void test()
{

FILE *fpt=NULL;
fpt=fopen(“test.txt““r“);
for (int i=0;i<=7;i++)
{
    initial(fpt);
feed_forward();
u[2][0]=floor(u[2][0]+0.5);
    u[2][1]=floor(u[2][1]+0.5);
    u[2][2]=floor(u[2][2]+0.5);
cout<    if(!((output[0]==u[2][0])&&(output[1]==u[2][1])&&(output[2]==u[2][2])))
;
else 
{
count++;
// cout< }
}
fclose(fpt);

}
//////////////RBF的东东///////////////////////////////////////////////////////////////////////
/////////////////////文件定位////////////////////////////////
void  fseeking(FILE* fpint row_no)
{  
rewind(fp);
if (!row_no) return;
  l:while((!feof(fp))&&(fgetc(fp)!=‘\n‘))
{
file_time++;
};
    //if(feof(fp)) return;
row_no--;
if (row_no) goto l; 
   else return;
}       
 ////径向距离/////
void min_juli(int *set_numbe

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4379  2005-06-01 14:40  bp_rbf\bisheji.dsp

     文件        537  2005-05-17 08:52  bp_rbf\bisheji.dsw

     文件      66560  2005-06-01 19:23  bp_rbf\bisheji.ncb

     文件      54784  2005-06-01 19:23  bp_rbf\bisheji.opt

     文件        248  2005-06-01 19:23  bp_rbf\bisheji.plg

     文件       1371  2005-06-01 18:04  bp_rbf\bp_rbf.h

     文件      20953  2005-06-01 18:08  bp_rbf\bp结果\权值.txt

     文件        570  2005-06-01 18:08  bp_rbf\bp结果\误差变化序列.txt

     文件      13210  2005-06-01 19:23  bp_rbf\mainApp.cpp

     文件       3559  2005-05-18 09:14  bp_rbf\matrix_op.h

     文件         78  2005-05-23 09:40  bp_rbf\rbf.cpp

     文件      20526  2005-06-01 18:08  bp_rbf\rbf结果\权值.txt

     文件     318582  2005-06-01 18:08  bp_rbf\rbf结果\误差.txt

     文件      21766  2005-06-01 15:11  bp_rbf\study.txt

     文件       7254  2005-06-01 14:45  bp_rbf\test.txt

     目录          0  2005-05-23 13:22  bp_rbf\bp结果

     目录          0  2005-05-18 17:13  bp_rbf\Debug

     目录          0  2005-05-28 23:21  bp_rbf\rbf结果

     目录          0  2005-05-18 17:13  bp_rbf

----------- ---------  ---------- -----  ----

               534377                    19


评论

共有 条评论