NeuralNetworkRBMauto.h
00001 #ifndef __NEURAL_NETWORK_RBM_AUTO_
00002 #define __NEURAL_NETWORK_RBM_AUTO_
00003
00004 #include "StandardAlgorithm.h"
00005 #include "Framework.h"
00006 #include "nnrbm.h"
00007
00008 using namespace std;
00009
00021 class NeuralNetworkRBMauto : public StandardAlgorithm, public Framework
00022 {
00023 public:
00024 NeuralNetworkRBMauto();
00025 ~NeuralNetworkRBMauto();
00026
00027 virtual void modelInit();
00028 virtual void modelUpdate ( REAL* input, REAL* target, uint nSamples, uint crossRun );
00029 virtual void predictAllOutputs ( REAL* rawInputs, REAL* outputs, uint nSamples, uint crossRun );
00030 virtual void readSpecificMaps();
00031 virtual void saveWeights ( int cross );
00032 virtual void loadWeights ( int cross );
00033 virtual void loadMetaWeights ( int cross );
00034
00035 static string templateGenerator ( int id, string preEffect, int nameID, bool blendStop );
00036
00037 private:
00038
00039 REAL** m_inputs;
00040
00041
00042 NNRBM** m_nn;
00043 int m_epoch;
00044
00045
00046 bool *m_isFirstEpoch;
00047
00048
00049 int m_nrLayerAuto;
00050 int m_nrLayerNetHidden;
00051 int m_batchSize;
00052 int m_tuningEpochsRBMFinetuning;
00053 int m_tuningEpochsOutputNet;
00054 double m_offsetOutputs;
00055 double m_scaleOutputs;
00056 double m_initWeightFactor;
00057 double m_learnrate;
00058 double m_learnrateAutoencoderFinetuning;
00059 double m_learnrateMinimum;
00060 double m_learnrateSubtractionValueAfterEverySample;
00061 double m_learnrateSubtractionValueAfterEveryEpoch;
00062 double m_momentum;
00063 double m_weightDecay;
00064 double m_minUpdateErrorBound;
00065 double m_etaPosRPROP;
00066 double m_etaNegRPROP;
00067 double m_minUpdateRPROP;
00068 double m_maxUpdateRPROP;
00069 bool m_enableL1Regularization;
00070 bool m_enableErrorFunctionMAE;
00071 bool m_enableRPROP;
00072 bool m_useBLASforTraining;
00073 string m_neuronsPerLayerAuto;
00074 string m_neuronsPerLayerNetHidden;
00075
00076 };
00077
00078
00079 #endif