/* * file : backprop.h * * User-defined parameters for backprop. * */ const int inSize = 2; const int hidSize = 2; const int outSize = 1; const int nPats = 4; class BPForward : public NslModule { public: NslDinFloat1 fInput; NslDinFloat1 dh; NslDinFloat2 dw; NslDoutFloat1 mf; NslDoutFloat2 w; private: NslFloat1 mp; NslFloat1 h; public: BPForward(char*,NslModule*, int,int); ~BPForward() {} 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*, int,int); ~BPBackward() {} void backwardPass(); void simTrain(); }; class BPBackwardProp : public BPBackward { public: NslDinFloat2 w; NslDoutFloat1 bOutput; public: BPBackwardProp(char*,NslModule*, int,int); ~BPBackwardProp() {} void simTrain(); }; class BPBackwardError : public NslModule { public: NslDinFloat1 desired; NslDinFloat1 mf; NslDoutFloat1 eOutput; private: NslFloat0 stopError; NslFloat0 pss; NslFloat0 tss; public: BPBackwardError(char*,NslModule*,int); ~BPBackwardError() {} 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*, int,int,int); ~BackPropLayers() {} void makeConn(); }; class TrainManager : public NslModule { NslFloat2 pInput; NslFloat2 pOutput; NslInt0 numPats; public: NslDoutFloat1 dInput; NslDoutFloat1 dOutput; TrainManager(char*,NslModule*, int,int,int); ~TrainManager() {} void initSys(); void simTrain(); }; class BackPropModel : public NslModel { TrainManager tf; BackPropLayers bp; public: BackPropModel(); ~BackPropModel() {} void makeConn(); };