updated a bunch of things, ready to test if it breaks things
[jacinto-ai/caffe-jacinto.git] / src / caffe / optimization / solver.hpp
index 0c680e34d01ed30d228d12dad4575bf6eeba98d4..0a78d88000178387b26d5e84f2498a37a3a9c8ed 100644 (file)
@@ -3,16 +3,39 @@
 
 namespace caffe {
 
+template <typename Dtype>
 class Solver {
  public:
   explicit Solver(const SolverParameter& param)
       : param_(param) {}
-  void Solve(Net* net);
+  // The main entry of the solver function.
+  void Solve(Net<Dtype>* net);
 
  protected:
+  // Get the update value for the current iteration.
+  virtual void ComputeUpdateValue() = 0;
+  void Snapshot(bool is_final = false);
   SolverParameter param_;
+  int iter_;
+  Net<Dtype>* net_;
+
+  DISABLE_COPY_AND_ASSIGN(Solver);
 };
 
+template <typename Dtype>
+class SGDSolver : public Solver<Dtype> {
+ public:
+  explicit SGDSolver(const SolverParameter& param)
+      : Solver<Dtype>(param) {}
+
+ protected:
+  Dtype GetLearningRate();
+  virtual void ComputeUpdateValue();
+  // history maintains the historical momentum data.
+  vector<shared_ptr<Blob<Dtype> > > history_;
+};
+
+
 }  // namspace caffe
 
 #endif  // CAFFE_OPTIMIZATION_SOLVER_HPP_
\ No newline at end of file