OpenANN  1.1.0
An open source library for artificial neural networks.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
IntrinsicPlasticity.h
Go to the documentation of this file.
1 #ifndef OPENANN_INTRINSIC_PLASTICITY_H_
2 #define OPENANN_INTRINSIC_PLASTICITY_H_
3 
4 #include <OpenANN/Learner.h>
5 #include <OpenANN/layers/Layer.h>
6 #include <OpenANN/io/DataSet.h>
7 #include <Eigen/Core>
8 
9 namespace OpenANN
10 {
11 
33 class IntrinsicPlasticity : public Learner, public Layer
34 {
35  const int nodes;
36  const double mu;
37  const double stdDev;
38  Eigen::VectorXd s;
39  Eigen::VectorXd b;
40  Eigen::VectorXd parameters;
41  Eigen::VectorXd g;
42  Eigen::VectorXd y;
43  Eigen::MatrixXd Y;
44  Eigen::MatrixXd Yd;
45  Eigen::MatrixXd e;
46 public:
47  IntrinsicPlasticity(int nodes, double mu, double stdDev = 1.0);
48 
49  virtual unsigned int examples();
50  virtual unsigned int dimension();
51  virtual bool providesInitialization();
52  virtual void initialize();
53  virtual double error();
54  virtual double error(unsigned int n);
55  virtual const Eigen::VectorXd& currentParameters();
56  virtual void setParameters(const Eigen::VectorXd& parameters);
57  virtual bool providesGradient();
58  virtual Eigen::VectorXd gradient();
59  virtual Eigen::VectorXd gradient(unsigned int n);
60  virtual Eigen::VectorXd operator()(const Eigen::VectorXd& a);
61  virtual Eigen::MatrixXd operator()(const Eigen::MatrixXd& A);
62 
63  virtual OutputInfo initialize(std::vector<double*>& parameterPointers,
64  std::vector<double*>& parameterDerivativePointers);
65  virtual void initializeParameters() {}
66  virtual void updatedParameters() {}
67  virtual void forwardPropagate(Eigen::MatrixXd* x, Eigen::MatrixXd*& y,
68  bool dropout, double* error = 0);
69  virtual void backpropagate(Eigen::MatrixXd* ein, Eigen::MatrixXd*& eout,
70  bool backpropToPrevious);
71  virtual Eigen::MatrixXd& getOutput();
72  virtual Eigen::VectorXd getParameters();
73 };
74 
75 } // namespace OpenANN
76 
77 #endif // OPENANN_INTRINSIC_PLASTICITY_H_