/* * file : backprop.h * * User-defined parameters for backprop. * */ class BPForward : public NslModule { public: NslDinFloat1 fInput; NslDinFloat1 dh; NslDinFloat2 dw; NslDoutFloat1 mf; NslDoutFloat2 w; protected: NslFloat1 mp; NslFloat1 h; public: BPForward(char*,NslModule*); ~BPForward() {} void memAlloc(int,int); void forwardPass(); void initSys(); void simRun(); void simTrain(); void endTrain(); }; class BPBackward : public NslModule { public: NslDinFloat1 bInput; NslDinFloat1 fInput; NslDinFloat1 mf; NslDoutFloat1 dh; NslDoutFloat2 dw; protected: NslFloat1 delta; NslFloat0 lrate; NslFloat0 momentum; public: BPBackward(char*,NslModule*); ~BPBackward() {} void memAlloc(int,int); void backwardPass(); void simTrain(); }; class BPBackwardProp : public BPBackward { public: NslDinFloat2 w; NslDoutFloat1 bOutput; public: BPBackwardProp(char*,NslModule*); ~BPBackwardProp() {} void memAlloc(int,int); void simTrain(); }; class BPBackwardError : public NslModule { public: NslDinFloat1 desired; NslDinFloat1 mf; NslDoutFloat1 eOutput; private: NslFloat0 stopError; NslFloat0 pss; NslFloat0 tss; public: BPBackwardError(char*,NslModule*); ~BPBackwardError() {} void memAlloc(int); void initSys(); void initTrain(); void simTrain(); void endTrain(); }; class BackPropLayers : public NslModule { public: BPForward fh,fo; BPBackwardError be; BPBackwardProp bo; BPBackward bh; NslDinFloat1 input; NslDinFloat1 desired; NslDoutFloat1 output; public: BackPropLayers(char*,NslModule*); ~BackPropLayers() {} void memAlloc(int,int,int); void makeConn(); }; class TrainManager : public NslModule { NslFloat2 pInput; NslFloat2 pOutput; NslInt0 numPats; nsl_str_data fname; public: NslDoutFloat1 dInput; NslDoutFloat1 dOutput; TrainManager(char*,NslModule*); ~TrainManager() {} void readFile(int,int); void memAlloc(int,int,int); void simTrain(); }; class BackPropModel : public NslModel { TrainManager tf; BackPropLayers bp; NslInt0 inSize; NslInt0 hidSize; NslInt0 outSize; public: BackPropModel(); ~BackPropModel() {} void makeConn(); void initSys(); };