www.pudn.com > RBPNN.rar > CRBPNN.H
#ifndef CRBPNN_H
#define CRBPNN_H
//径向基概率神经网络
class CRBPNN
{
protected:
//控制参数
int m_pN; //输入模式个数
int m_pD; //输入模式维数
int m_pC; //输入模式类别数
int m_in; //输入层节点数=m_pD
int m_out; //输出层节点数=m_pC
int m_mid1; //第一隐层节点数=m_pN
int m_mid2; //第二隐层节点数=m_pC
char* m_kernel; //变换函数名(核)
char* m_learningalgorithm;//网络训练所用的学习算法
int *v_pNC; //每个类别对应的模式数[m_pC]
int *v_pSort; //将模式按类别索引排序(从第1类开始,记录位置)[m_pN]
int *v_pClass; //输入模式的类别[m_pN]
double **v_pX; //输入模式[m_pN][m_in]
double **v_expectD; //期望输出[m_pN][m_out]
double **v_realY; //实际输出[m_pN][m_out]
double **v_conS; //中心控制矢量[m_mid1][m_in]
double **v_midZ1; //第一隐层输出[m_pN][m_mid1]
double **v_midZ2; //第二隐层输出[m_pN][m_mid2]
double **v_weight; //权值[m_out][m_mid2]
public:
CRBPNN();
~CRBPNN();
void Training(int,int,int,char*,char*,char*); //网络训练
void Classifying(int,char*); //模式分类
void SetWeight(char*); //设置权值
void GetWeight(char*); //输出权值
void GetOutput(char*); //网络输出
void GetEnergyJ(); //查看累积误差能量函数
double CalcRightProbability(char*);
protected:
void CalcNumberperC(); //计算每个类别对应的模式个数
void ChooseandSortconS(); //设置中心控制矢量,并将其按类别排好
void CalcMidZ1(); //计算第一隐层输出
void CalcMidZ2(); //计算第二隐层输出
void RLSA(); //递推最小二乘反向传播算法
void CalcGain(int,double,double*,double**); //计算卡尔曼增益
void CalcIcorrP(int,double,double*,double**); //迭代计算逆相关矩阵
void CalcWeight(int,double*); //迭代更新网络权值
double CalcEnergyJ(int,double,double); //迭代计算累积误差能量函数
void CalcOutput(); //计算网络输出
};
#endif //CRBPNN_H