BP算法C++实现.doc#include "" #include "" #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][i]= 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/1OOO;〃 第m个样本输出层权值初始化
} //randomize();
{ //sgn=pow((-1),random(1O)); sgn=rand();
rnd=sgn*(rand()%1O); gama[k]=rnd/1O;// 输出层阈值初始化 cout<<"gama[k]"<<endl;
}
return 1;
}// 子程序 initial() 结束
////////////////////////////////
////第m个学习样本输入子程序///
///////////////////////////////
input
BP算法C++实现 来自淘豆网m.daumloan.com转载请标明出处.