OpenANN  1.1.0
An open source library for artificial neural networks.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Layer.h
Go to the documentation of this file.
1 #ifndef OPENANN_LAYERS_LAYER_H_
2 #define OPENANN_LAYERS_LAYER_H_
3 
4 #include <Eigen/Core>
5 #include <vector>
6 
7 namespace OpenANN
8 {
9 
16 {
17 public:
19  std::vector<int> dimensions;
20 
25  int outputs();
26 };
27 
34 class Layer
35 {
36 public:
37  virtual ~Layer() {}
44  virtual OutputInfo initialize(std::vector<double*>& parameterPointers,
45  std::vector<double*>& parameterDerivativePointers) = 0;
50  virtual void initializeParameters() = 0;
55  virtual void updatedParameters() = 0;
63  virtual void forwardPropagate(Eigen::MatrixXd* x, Eigen::MatrixXd*& y,
64  bool dropout, double* error = 0) = 0;
72  virtual void backpropagate(Eigen::MatrixXd* ein, Eigen::MatrixXd*& eout,
73  bool backpropToPrevious) = 0;
78  virtual Eigen::MatrixXd& getOutput() = 0;
83  virtual Eigen::VectorXd getParameters() = 0;
84 };
85 
86 } // namespace OpenANN
87 
88 #endif // OPENANN_LAYERS_LAYER_H_