c语言版bp神经网络.doc
文本预览下载声明
看到学生用Matlab做了BP神经网络应用的程序,突然想起自己在上学时写了个BP的C语言版,现在真不知道当时是怎么写出来的,这里放上来做一个纪念。
#includestdio.h
#includestdlib.h
#includemath.h
#includeconio.h
#includectype.h
#includestring.h
#includetime.h
#define MAXWEIGHT ((float)0.3)
#define SCALEWEIGHT ((float)32767)
#define nInputNodes 4
#define nHiddenNodes 8
#define nOutputNodes 3
#define nPatterns 15
#define nIterations 5000
#define ESC 27
#define ERRORLEVEL 0.0001
#define ITEMS 8
typedef float *PFLOAT;
typedef PFLOAT VECTOR;
typedef PFLOAT *MATRIX;
void VectorAllocate(VECTOR *vector,int nCols);
void AllocateCols(PFLOAT matrix[],int nRows,int nCols);
void MatrixAllocate(MATRIX *pmatrix,int nRows,int nCols);
void MatrixFree(MATRIX matrix,int nRows);
MATRIX out0;
MATRIX out1;
MATRIX delta1;
MATRIX delw1;
MATRIX w1;
MATRIX out2;
MATRIX delta2;
MATRIX delw2;
MATRIX w2;
MATRIX target;
//VECTOR PatternID;
void main()
{
float eta =0.15,
alpha=0.075;
int nReportErrors=100;
float ErrorLevel=ERRORLEVEL;
char MonitorError=0;
float error;
register int h;
register int i;
register int j;
int p,
q;
// r;
FILE *fpPattern,
*fpWeightsOut,
*fpResults,
*fpError,
*fpTest;
MatrixAllocate(out0, nPatterns, nInputNodes);
MatrixAllocate(out1, nPatterns, nHiddenNodes);
MatrixAllocate(out2, nPatterns, nOutputNodes);
MatrixAllocate(delta2,nPatterns, nOutputNodes);
MatrixAllocate(delw2, nOutputNodes, nHiddenNodes+1);
MatrixAllocate(w2, nOutputNodes, nHiddenNodes+1);
MatrixAllocate(delta1, nPatterns, nHiddenNodes);
MatrixAllocate(delw1, nHiddenNodes,nInputNodes+1);
MatrixAllocate(w1, nHiddenNodes,nInputNodes+1);
MatrixAllocate(target,nPatterns, nOutputNodes);
// VectorAllocate(PatternID,nPatterns);
//初始化
显示全部