📄 bpnlayer.h
字号:
///////////
//bpnlayer.h
#include "neucell.h"
#define for if(0); else for //使if 和for语句中定义的变量作用域局限在其本身
class CBPNLayer:public CObject
{
DECLARE_SERIAL(CBPNLayer)
CNeuCell ***m_ppnBPnet; //指向 神经细胞类 的双重指针 用以创建 神经元层数组 进而创建神经元数组
int m_iLayerNum,*m_piLayerCapture; //m_iLayerNum为网络层数 不包括输入层,m_piLayerCapture每层神经元包含层数
double *m_pdInput,*m_pdDerivTempA,*m_pdDerivTempB;//m_pdInput输入值,m_pdDerivTempAδ值用来在两层间计算
double m_dStudyRate,*m_pdResualtExpect; //m_dStudyRate学习速率,m_dResualtExpect期望输出值
NEURONTYPE m_ntTranslateFunction; //用来指定神经元转换函数类型,NEURONTYPE在neucell.h定义
double m_dMomentum;
public:
CBPNLayer(); //缺省构造函数内没有任何内容,只是保留函数。
CBPNLayer(int LayerNum,int *pLayerCapture,NEURONTYPE TranslateFunctionType
,double StudyRate,double Momentum);//用户应而且只能使用这个构造函数
~CBPNLayer(); //析构函数用以释放动态定义的变量,此程序中动态定义很多应注意
void SetBPNet(int LayerNum,int *pLayerCapture,NEURONTYPE TranslateFunctionType
,double StudyRate,double Momentum);
void Input(double *dInput,double *ResualtExpect);//输入 输入数据组指针,和期望值
void SetStudyRate(double StudyRate); //学习速率设定
void SetMomentum(double Momentum);//动量因子设定;
void SetNeuronWeight(int LayerNum,int NueronSequence,int NodeSequence,double InputData);
double GetNeuronWeight(int LayerNum,int NueronSequence,int NodeSequence);//得到其中神经元节点的权值
double GetNeuronValue(int LayerNum,int NueronSequence); //得到其中神经元输出
double GetResualt(int OutputNumth=0); //得到神经网络输出
void Run(); //使神经元网络计算,在输入数据后用户必须使用该函数;
void Expend();
void Serialize(CArchive& ar);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -