OpenANN  1.1.0
An open source library for artificial neural networks.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Subsampling.h
Go to the documentation of this file.
1 #ifndef OPENANN_LAYERS_SUBSAMPLING_H_
2 #define OPENANN_LAYERS_SUBSAMPLING_H_
3 
4 #include <OpenANN/layers/Layer.h>
7 
8 namespace OpenANN
9 {
10 
34 class Subsampling : public Layer
35 {
36  int I, fm, inRows, inCols, kernelRows, kernelCols;
37  bool bias;
39  double stdDev;
40  Eigen::MatrixXd* x;
42  std::vector<Eigen::MatrixXd> W;
43  std::vector<Eigen::MatrixXd> Wd;
45  std::vector<Eigen::MatrixXd> Wb;
46  std::vector<Eigen::MatrixXd> Wbd;
47  Eigen::MatrixXd a;
48  Eigen::MatrixXd y;
49  Eigen::MatrixXd yd;
50  Eigen::MatrixXd deltas;
51  Eigen::MatrixXd e;
52  int fmInSize, outRows, outCols, fmOutSize, maxRow, maxCol;
53  Regularization regularization;
54 
55 public:
56  Subsampling(OutputInfo info, int kernelRows, int kernelCols, bool bias,
57  ActivationFunction act, double stdDev,
58  Regularization regularization);
59  virtual OutputInfo initialize(std::vector<double*>& parameterPointers,
60  std::vector<double*>& parameterDerivativePointers);
61  virtual void initializeParameters();
62  virtual void updatedParameters() {}
63  virtual void forwardPropagate(Eigen::MatrixXd* x, Eigen::MatrixXd*& y,
64  bool dropout, double* error = 0);
65  virtual void backpropagate(Eigen::MatrixXd* ein, Eigen::MatrixXd*& eout,
66  bool backpropToPrevious);
67  virtual Eigen::MatrixXd& getOutput();
68  virtual Eigen::VectorXd getParameters();
69 };
70 
71 } // namespace OpenANN
72 
73 #endif // OPENANN_LAYERS_SUBSAMPLING_H_