home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 February / PCWK0297.iso / technika / nnmodel / neural.h < prev    next >
C/C++ Source or Header  |  1995-03-30  |  3KB  |  112 lines

  1. #ifndef __CNEURAL_H__
  2. #define __CNEURAL_H__
  3.  
  4. #define NN_DYNAMIC        1
  5. #define NN_DATAMAT        2
  6. #define NN_PARAMSLOADED    4
  7.  
  8. #define NN_STHRU    // Straight through connections
  9.  
  10.     struct _neural {
  11.         long m_version;   // version
  12.         int m_istate;
  13.         int m_ninputs;
  14.         int m_nhidden;
  15.         int m_noutputs;
  16.  
  17.         float *m_ni;  /* declare input neurons */
  18.         float *m_nout;    // output of output layer
  19.         float *m_olastoutputv;   // output of output
  20.  
  21. // declare hidden layer neurons
  22.         float **m_hinputw;   // weight of input to hidden
  23.         float *m_houtputv;   // output of hidden
  24.         float *m_hlastoutputv;   // output of hidden
  25.         float *m_htheta;
  26. // declare output neurons
  27.         float **m_oinputw;   // weight of hidden to output
  28.         float *m_otheta;
  29.  
  30. #ifdef NN_STHRU
  31.         float **m_iinputw;   // weight of input to output
  32. #endif
  33.  
  34. // Now for the dynamic variables
  35.  
  36.         PARAMS *m_params;
  37.         DATAMAT *m_dm;
  38.  
  39. // declare hidden layer neurons
  40.         float **m_hlastdelta; // last delta weight of input/hidden
  41.         float *m_hlastvar;    // last VAR
  42.         float *m_hlearn;
  43.         float *m_htlearn;
  44. // declare output neurons
  45.         float **m_olastdelta; // last delta weight of hidden/output
  46. #ifdef NN_STHRU
  47.         float **m_ilastdelta; // last delta weight of input/output
  48. #endif
  49.         float *m_olastvar;    // last var weight of output
  50.         float *m_otraining;
  51.         float *m_olearn;
  52.         float *m_otlearn;
  53.  
  54.         float *m_startp;
  55.         int m_NDIM;
  56.         float *m_pcom;
  57.         float *m_xicom;
  58.         float *m_xt;
  59.         float *m_g,*m_h,*m_xi;
  60.         float m_sumerr2;
  61.         long m_cnt;
  62.         float m_stats[7];
  63.         int m_itmax; // # of iterations in CG optim
  64.     };
  65.     typedef struct _neural NEURAL;
  66.  
  67.     NEURAL *NCreateNeural();
  68.     void NDeleteNeural(NEURAL *pN );
  69.     int NImportNetwork (NEURAL *pN, FILE *fd);
  70.     NEURAL *LoadNetwork (char *filename);
  71.     void DumpNeural(NEURAL *pN, FILE *fd);
  72.  
  73.     void NAddHidden(NEURAL *pN);
  74.     void NFeedForward(NEURAL *pN);
  75.     int NBackProp1(NEURAL *pN,int cnt);
  76.     void NClearDelta(NEURAL *pN);
  77.     void NInitializeNetwork(NEURAL *pN);
  78.     void NNewTrainingSet(NEURAL *pN, int t,int flag);
  79.     int NAI(NEURAL *pN, int flag,int a);
  80.     float NCalcRsquare(NEURAL *pN);
  81.     float NCheckTol(NEURAL *pN,float *min, float *max, int *nmin, int *nmax);
  82.     int NQuickTrain(NEURAL *pN,int mode,int increment);
  83.  
  84. // Conj Grad routines
  85.     void Nfrprmn(NEURAL *pN,float *p, float ftol, int *iter, float *fret);
  86.     float Nbrent(NEURAL *pN,float ax, float bx, float cx, float tol,float *xmin);
  87.     void Nmnbrak(NEURAL *pN,float *ax, float *bx, float *cx, float *fa, float *fb,float *fc);
  88.     float Nf1dim(NEURAL *pN,float x);
  89.     void Nlinmin(NEURAL *pN,float *p, float *xi, float *fret);
  90.     void NforwardDIffGradient (NEURAL *pN,float *x0, float *g);
  91.     float NErrorFunction(NEURAL *pN,float* x);
  92.     void Nrerror(char *error_text);
  93.     void NCGTrain(NEURAL *pN);
  94.     void NSetDM( NEURAL *pN, DATAMAT *a);
  95.     void NInterrogate(NEURAL *pN,float *Ivec,float *Ovec);
  96.  
  97. /*
  98.     void SetInput(const int neuron, float f);
  99.     void SetRInput(const int neuron, float f);
  100.     float GetInput(const int neuron);
  101.     float GetOutput(const int neuron);
  102.     float GetTrain(const int neuron);
  103.     float GetRInput(const int neuron);
  104.     float GetROutput(const int neuron);
  105.     float GetRTrain(const int neuron);
  106.  
  107. */
  108.  
  109. #endif // __CNEURAL_H__
  110.  
  111.  
  112.