mlpack  2.0.1
incomplete_incremental_termination.hpp
Go to the documentation of this file.
1 
14 #ifndef _MLPACK_METHODS_AMF_INCOMPLETE_INCREMENTAL_TERMINATION_HPP
15 #define _MLPACK_METHODS_AMF_INCOMPLETE_INCREMENTAL_TERMINATION_HPP
16 
17 #include <mlpack/core.hpp>
18 
19 namespace mlpack {
20 namespace amf {
21 
29 template <class TerminationPolicy>
31 {
32  public:
39  TerminationPolicy tPolicy = TerminationPolicy()) :
40  tPolicy(tPolicy) { }
41 
47  template<class MatType>
48  void Initialize(const MatType& V)
49  {
50  tPolicy.Initialize(V);
51 
52  // Initialize incremental index to number of rows.
53  incrementalIndex = V.n_rows;
54  iteration = 0;
55  }
56 
63  bool IsConverged(arma::mat& W, arma::mat& H)
64  {
65  // increment iteration count
66  iteration++;
67 
68  // If the iteration count is a multiple of incremental index, return the
69  // wrapped termination policy result.
70  if (iteration % incrementalIndex == 0)
71  return tPolicy.IsConverged(W, H);
72  else
73  return false;
74  }
75 
77  const double& Index() const { return tPolicy.Index(); }
78 
80  const size_t& Iteration() const { return iteration; }
81 
83  size_t MaxIterations() const { return tPolicy.MaxIterations(); }
85  size_t& MaxIterations() { return tPolicy.MaxIterations(); }
86 
88  const TerminationPolicy& TPolicy() const { return tPolicy; }
90  TerminationPolicy& TPolicy() { return tPolicy; }
91 
92  private:
94  TerminationPolicy tPolicy;
95 
99  size_t iteration;
100 }; // class IncompleteIncrementalTermination
101 
102 } // namespace amf
103 } // namespace mlpack
104 
105 #endif
void Initialize(const MatType &V)
Initializes the termination policy before stating the factorization.
size_t & MaxIterations()
Modify maximum number of iterations.
Linear algebra utility functions, generally performed on matrices or vectors.
const TerminationPolicy & TPolicy() const
Access the wrapped termination policy.
const size_t & Iteration() const
Get current iteration count.
TerminationPolicy & TPolicy()
Modify the wrapped termination policy.
size_t incrementalIndex
Number of iterations after which wrapped class object will be called.
TerminationPolicy tPolicy
Wrapped termination policy.
Include all of the base components required to write MLPACK methods, and the main MLPACK Doxygen docu...
IncompleteIncrementalTermination(TerminationPolicy tPolicy=TerminationPolicy())
Empty constructor.
const double & Index() const
Get current value of residue.
bool IsConverged(arma::mat &W, arma::mat &H)
Check if termination criterio is met.
size_t MaxIterations() const
Access maximum number of iterations.
This class acts as a wrapper for basic termination policies to be used by SVDIncompleteIncrementalLea...