📄 bpnnet.h
字号:
// BPNNET.h: interface for the CBPNNET class.
//
//////////////////////////////////////////////////////////////////////
#ifndef _BPNNET_H
#define _BPNNET_H
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//#include "dibapi.h"
typedef int BOOL;
typedef int INT;
typedef double REAL;
typedef struct { /* 层机构 */
INT Units; /* - 层中的神经元数*/
REAL* Output; /* - 第i个元的输出*/
REAL* Error; /* - 第i个元的误差 */
REAL** Weight; /* - 第i个元的连接权重 */
REAL** WeightSave; /* - 训练结束权保存 */
REAL** dWeight; /* - 山此权重调整量 */
} LAYER;
typedef struct { /* 网络: */
LAYER** Layer; /* - 网络的隐藏层 */
LAYER* InputLayer; /* - 输入层 */
LAYER* OutputLayer; /* - 输出层 */
REAL Alpha; /* - 动量因子 */
REAL Eta; /* - 学习速率 */
REAL Gain; /* - sigmoid函数增益 */
REAL Error; /* - 网络总误差 */
} NET;
#define FALSE 0
#define TRUE 1
#define NOT !
#define AND &&
#define OR ||
#define MIN_REAL -HUGE_VAL
#define MAX_REAL +HUGE_VAL
#ifndef MIN
#define MIN(x,y) ((x)<(y) ? (x) : (y))
#endif
#ifndef MAX
#define MAX(x,y) ((x)>(y) ? (x) : (y))
#endif
#define LO 0
#define HI 1
#define BIAS 1
#define sqr(x) ((x)*(x))
#define TRAIN_LWB (0)
#define TEST_LWB (0)
#define EVAL_LWB (0)
class CBPNNET : public CObject
{
public:
void RunNet(NET* Net, REAL* Input, REAL* Output);
void SetPara(INT *m_Units,REAL **m_InputVectors,REAL **m_TargetVectors,REAL *m_Mean);
CBPNNET();
virtual ~CBPNNET();
void InitializeRandoms(); //初始化随机数
INT RandomEqualINT(INT Low, INT High);
REAL RandomEqualREAL(REAL Low, REAL High);
void NormalizeTargets();
void InitializeApplication(NET* Net);
void FinalizeApplication(NET* Net);
void GenerateNetwork(NET* Net);
void RandomWeights(NET* Net);
void SetInput(NET* Net, REAL* Input);
void GetOutput(NET* Net, REAL* Output);
void SaveWeights(NET* Net);
void RestoreWeights(NET* Net);
void PropagateLayer(NET* Net, LAYER* Lower, LAYER* Upper);
void PropagateNet(NET* Net);
void ComputeOutputError(NET* Net, REAL* Target);
void BackpropagateLayer(NET* Net, LAYER* Upper, LAYER* Lower);
void BackpropagateNet(NET* Net);
void AdjustWeights(NET* Net);
void SimulateNet(NET* Net, REAL* Input, REAL* Output, REAL* Target, BOOL Training);
void TrainNet(NET* Net, INT Epochs);
void TestNet(NET* Net);
void EvaluateNet(NET* Net);
REAL **TargetVectors;//[NUM_OUTPUTS][M];//对应样本输入的输出向量
REAL **InputVectors;//[NUM_INPUTS][N];//输入样本向量
INT *Units;
REAL *Mean;
REAL TrainError;
REAL TrainErrorPredictingMean;
REAL TestError;
REAL TestErrorPredictingMean;
FILE* f;
REAL Alpha; /* - 动量因子 */
REAL Eta; /* - 学习速率 */
REAL Gain; /* - sigmoid函数增益 */
INT NUM_LAYERS; //3层数
INT NN;
INT MM;
INT NUM_SAMPLES;
INT TRAIN_UPB;// (3)
INT TRAIN_SAMPLES;// (TRAIN_UPB - TRAIN_LWB + 1)
INT TEST_UPB;// (3)
INT TEST_SAMPLES;// (TEST_UPB - TEST_LWB + 1)
INT EVAL_UPB;// (3)
INT EVAL_SAMPLES;// (EVAL_UPB - EVAL_LWB + 1)
};
#endif // !defined(AFX_BPNNET_H__EEC0D0BF_898D_4BD2_930E_A2C64D2273E4__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -