OpenANN  1.1.0
An open source library for artificial neural networks.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MaxPooling.h
Go to the documentation of this file.
1 #ifndef OPENANN_LAYERS_MAX_POOLING_H_
2 #define OPENANN_LAYERS_MAX_POOLING_H_
3 
4 #include <OpenANN/layers/Layer.h>
6 
7 namespace OpenANN
8 {
9 
25 class MaxPooling : public Layer
26 {
27  int I, fm, inRows, inCols, kernelRows, kernelCols;
28  Eigen::MatrixXd* x;
29  Eigen::MatrixXd y;
30  Eigen::MatrixXd e;
31  int fmInSize, outRows, outCols, fmOutSize, maxRow, maxCol;
32 
33 public:
34  MaxPooling(OutputInfo info, int kernelRows, int kernelCols);
35  virtual OutputInfo initialize(std::vector<double*>& parameterPointers,
36  std::vector<double*>& parameterDerivativePointers);
37  virtual void initializeParameters();
38  virtual void updatedParameters() {}
39  virtual void forwardPropagate(Eigen::MatrixXd* x, Eigen::MatrixXd*& y,
40  bool dropout, double* error = 0);
41  virtual void backpropagate(Eigen::MatrixXd* ein, Eigen::MatrixXd*& eout,
42  bool backpropToPrevious);
43  virtual Eigen::MatrixXd& getOutput();
44  virtual Eigen::VectorXd getParameters();
45 };
46 
47 } // namespace OpenANN
48 
49 #endif // OPENANN_LAYERS_MAX_POOLING_H_