⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bpnnet.h

📁 BP神经网络VC类
💻 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 + -