OpenANN  1.1.0
An open source library for artificial neural networks.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Optimizable.h
Go to the documentation of this file.
1 #ifndef OPENANN_OPTIMIZATION_OPTIMIZABLE_H_
2 #define OPENANN_OPTIMIZATION_OPTIMIZABLE_H_
3 #if __GNUC__ >= 4
4 #pragma GCC diagnostic ignored "-Wunused-parameter"
5 #endif
6 
7 #include <Eigen/Core>
8 #include <vector>
9 
10 namespace OpenANN
11 {
12 
26 {
27 public:
28  virtual ~Optimizable() {}
29 
34 
39  virtual bool providesInitialization() = 0;
43  virtual void initialize() = 0;
48  virtual unsigned dimension() = 0;
53  virtual const Eigen::VectorXd& currentParameters() = 0;
58  virtual void setParameters(const Eigen::VectorXd& parameters) = 0;
63  virtual double error() = 0;
69  virtual bool providesGradient() = 0;
74  virtual Eigen::VectorXd gradient() = 0;
76 
82 
87  virtual unsigned examples() { return 1; }
93  virtual double error(unsigned n) { return error(); }
99  virtual Eigen::VectorXd gradient(unsigned n) { return gradient(); }
106  virtual void errorGradient(int n, double& value, Eigen::VectorXd& grad);
112  virtual void errorGradient(double& value, Eigen::VectorXd& grad);
119  virtual Eigen::VectorXd error(std::vector<int>::const_iterator startN,
120  std::vector<int>::const_iterator endN);
127  virtual Eigen::VectorXd gradient(std::vector<int>::const_iterator startN,
128  std::vector<int>::const_iterator endN);
137  virtual void errorGradient(std::vector<int>::const_iterator startN,
138  std::vector<int>::const_iterator endN,
139  double& value, Eigen::VectorXd& grad);
141 
145  virtual void finishedIteration() {}
146 };
147 
148 } // namespace OpenANN
149 
150 #endif // OPENANN_OPTIMIZATION_OPTIMIZABLE_H_