GestureRecognitionToolkit  Version: 0.2.0
The Gesture Recognition Toolkit (GRT) is a cross-platform, open-source, c++ machine learning library for real-time gesture recognition.
MLP.h
Go to the documentation of this file.
1 
33 #ifndef GRT_MLP_HEADER
34 #define GRT_MLP_HEADER
35 
36 #include "Neuron.h"
37 #include "../../../CoreModules/Regressifier.h"
38 
39 GRT_BEGIN_NAMESPACE
40 
41 class GRT_API MLP : public Regressifier{
42  public:
46  MLP();
47 
53  MLP(const MLP &rhs);
54 
58  virtual ~MLP();
59 
66  MLP &operator=(const MLP &rhs);
67 
75  virtual bool deepCopyFrom(const Regressifier *regressifier);
76 
83  virtual bool train_(ClassificationData &trainingData);
84 
91  virtual bool train_(RegressionData &trainingData);
92 
100  virtual bool predict_(VectorFloat &inputVector);
101 
107  virtual bool clear();
108 
114  virtual bool print() const;
115 
123  virtual bool save( std::fstream &file ) const;
124 
132  virtual bool load( std::fstream &file );
133 
141  UINT getNumClasses() const;
142 
158  bool init(const UINT numInputNeurons, const UINT numHiddenNeurons, const UINT numOutputNeurons);
159 
177  bool init(const UINT numInputNeurons, const UINT numHiddenNeurons, const UINT numOutputNeurons, const UINT inputLayerActivationFunction,
178  const UINT hiddenLayerActivationFunction, const UINT outputLayerActivationFunction);
179 
184  void printNetwork() const;
185 
191  bool checkForNAN() const;
192 
199  std::string activationFunctionToString(const UINT activationFunction) const;
200 
207  UINT activationFunctionFromString(const std::string activationName) const;
208 
215  bool validateActivationFunction(const UINT avactivationFunction) const;
216 
222  UINT getNumInputNeurons() const;
223 
229  UINT getNumHiddenNeurons() const;
230 
236  UINT getNumOutputNeurons() const;
237 
243  UINT getInputLayerActivationFunction() const;
244 
250  UINT getHiddenLayerActivationFunction() const;
251 
257  UINT getOutputLayerActivationFunction() const;
258 
267  UINT getNumRandomTrainingIterations() const;
268 
274  Float getTrainingRate() const;
275 
281  Float getMomentum() const;
282 
288  Float getGamma() const;
289 
296  Float getTrainingError() const;
297 
303  bool getClassificationModeActive() const;
304 
310  bool getRegressionModeActive() const;
311 
317  Vector< Neuron > getInputLayer() const;
318 
324  Vector< Neuron > getHiddenLayer() const;
325 
331  Vector< Neuron > getOutputLayer() const;
332 
339  Vector< VectorFloat > getTrainingLog() const;
340 
346  bool getNullRejectionEnabled() const;
347 
355  Float getNullRejectionCoeff() const;
356 
364  Float getNullRejectionThreshold() const;
365 
374  Float getMaximumLikelihood() const;
375 
381  VectorFloat getClassLikelihoods() const;
382 
388  VectorFloat getClassDistances() const;
389 
395  UINT getPredictedClassLabel() const;
396 
404  bool setInputLayerActivationFunction(const UINT activationFunction);
405 
413  bool setHiddenLayerActivationFunction(const UINT activationFunction);
414 
422  bool setOutputLayerActivationFunction(const UINT activationFunction);
423 
432  bool setTrainingRate(const Float trainingRate);
433 
441  bool setMomentum(const Float momentum);
442 
450  bool setGamma(const Float gamma);
451 
462  bool setNumRandomTrainingIterations(const UINT numRandomTrainingIterations);
463 
470  bool setNullRejection(const bool useNullRejection);
471 
481  bool setNullRejectionCoeff(const Float nullRejectionCoeff);
482 
483  //Tell the compiler we are using the following functions from the MLBase class to stop hidden virtual function warnings
484  using MLBase::save;
485  using MLBase::load;
486  using MLBase::train;
487  using MLBase::train_;
488  using MLBase::predict;
489  using MLBase::predict_;
490 
491  protected:
492  bool inline isNAN(const Float v) const;
493 
494  bool trainModel(RegressionData &trainingData);
495 
496  bool trainOnlineGradientDescentClassification(const RegressionData &trainingData,const RegressionData &validationData);
497 
498  bool trainOnlineGradientDescentRegression(const RegressionData &trainingData,const RegressionData &validationData);
499 
500  bool loadLegacyModelFromFile( std::fstream &file );
501 
511  Float back_prop(const VectorFloat &inputVector,const VectorFloat &targetVector,const Float alpha,const Float beta);
512 
519  VectorFloat feedforward(VectorFloat data);
520 
529  void feedforward(const VectorFloat &data,VectorFloat &inputNeuronsOuput,VectorFloat &hiddenNeuronsOutput,VectorFloat &outputNeuronsOutput);
530 
531  UINT numInputNeurons;
532  UINT numHiddenNeurons;
533  UINT numOutputNeurons;
534  UINT inputLayerActivationFunction;
535  UINT hiddenLayerActivationFunction;
536  UINT outputLayerActivationFunction;
537  UINT numRandomTrainingIterations;
538  UINT trainingMode;
539  Float momentum;
540  Float gamma;
541  Float trainingError;
542  bool initialized;
543  Random random;
544 
545  Vector< Neuron > inputLayer;
546  Vector< Neuron > hiddenLayer;
547  Vector< Neuron > outputLayer;
548  Vector< VectorFloat > trainingErrorLog;
549 
550  //Classifier Variables
551  bool classificationModeActive;
552  bool useNullRejection;
553  UINT predictedClassLabel;
554  Float nullRejectionThreshold;
555  Float nullRejectionCoeff;
556  Float maxLikelihood;
557  VectorFloat classLikelihoods;
558 
559  static RegisterRegressifierModule< MLP > registerModule;
560 
561  //Temp Training Stuff
562  VectorFloat inputNeuronsOuput;
563  VectorFloat hiddenNeuronsOutput;
564  VectorFloat outputNeuronsOutput;
565  VectorFloat deltaO;
566  VectorFloat deltaH;
567 
568  public:
569  enum TrainingModes{ONLINE_GRADIENT_DESCENT};
570 
571 };
572 
573 GRT_END_NAMESPACE
574 
575 #endif //GRT_MLP_HEADER
virtual bool predict(VectorFloat inputVector)
Definition: MLBase.cpp:113
This class implements a Neuron that is used by the Multilayer Perceptron.
virtual bool predict_(VectorFloat &inputVector)
Definition: MLBase.cpp:115
Definition: Random.h:40
virtual bool train(ClassificationData trainingData)
Definition: MLBase.cpp:89
virtual bool save(const std::string filename) const
Definition: MLBase.cpp:143
virtual bool deepCopyFrom(const Regressifier *regressifier)
Definition: Regressifier.h:63
virtual bool load(const std::string filename)
Definition: MLBase.cpp:167
virtual bool print() const
Definition: MLBase.cpp:141
virtual bool train_(ClassificationData &trainingData)
Definition: MLBase.cpp:91
Definition: MLP.h:41
virtual bool clear()