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

📄 ukohonennet.h

📁 Kohonen神经网络的类代码
💻 H
字号:
//	//////////////////////////////////////////////////////////////////////
//	//
//	//  作者:LUO Jiancheng
//	//  创建日期:2002/11/05
//	//  最后修改日期:2003/06/18
//	//
//	//////////////////////////////////////////////////////////////////////

#ifndef UKohonenNetH
#define UKohonenNetH
#define DEBUG
#include <stdio.h>

#define   MAXPATS       2000
#define   MAXNEURONSIN  20
#define   MAXNEURONS    5

#define   MAXEPOCHS     2000
#define   ETAMIN       .001

class CRasterData;

//---------------------------------------------------------------------------
class TKNPattern 
{
	friend class KNET;

private:
	//double          **P;
	int             NumPatterns;
	int             *Shuffle;
	int             SizeVector;

public:
	//TKNPattern(int numPatterns, int sizeVector, double **data);
	TKNPattern(CRasterData *pData);
	~TKNPattern();
	
public:
	//  int GetPatterns();  //load pattern form file
	int __fastcall Norm(int maxValue);
	int GetRandPats(int,int); //random patterns arg1=# of patterns, arg2=dimension
	double Query(int,int);    //returns P[arg1][arg2]
	double QueryR(int,int);   //returns P[Shuffle[arg1]][arg2]
	void ReShuffle(int N);

protected:
	CRasterData *m_pRaster;
};



//---------------------------------------------------------------------------

class KNET 
{
private:
	double  Yout[MAXNEURONS];             // The output layer neurons
	double  Yin[MAXNEURONSIN];            //The input layer neurons
	int     YinSize;                      //input layer dimensions
	int     YoutSize;                     //outlayer dimensions

	int     epoch;
	double  eta;                          //The learning rate
	double  delta_eta;                    //Amount to change l.r. each epoch
	int     StochFlg;                     //Present vectors in rand order if 1
	TKNPattern *m_pPattern;

	int     LoadInLayer(int);             //pattern->input layer
	double  EucNorm(int);                 //Calc Euclidean distance
	int     FindWinner();                 //get coords of winning neuron
	void    Train(int);
	void    AdaptParms(FILE *fid);

public:
	double  W[MAXNEURONSIN][MAXNEURONS];  // The weight matrix
	KNET();
   ~KNET();
	void SetPattern(TKNPattern *);
	void SetParms(int, double);
	void PrintWeights(FILE *fid);
	void PrintWinner();
	void RunTrn();
	void Run();

	unsigned char *Label;
};


//---------------------------------------------------------------------------
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -