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