mlpack  master
incomplete_incremental_termination.hpp
Go to the documentation of this file.
1 
12 #ifndef _MLPACK_METHODS_AMF_INCOMPLETE_INCREMENTAL_TERMINATION_HPP
13 #define _MLPACK_METHODS_AMF_INCOMPLETE_INCREMENTAL_TERMINATION_HPP
14 
15 #include <mlpack/prereqs.hpp>
16 
17 namespace mlpack {
18 namespace amf {
19 
27 template <class TerminationPolicy>
29 {
30  public:
37  TerminationPolicy tPolicy = TerminationPolicy()) :
38  tPolicy(tPolicy) { }
39 
45  template<class MatType>
46  void Initialize(const MatType& V)
47  {
48  tPolicy.Initialize(V);
49 
50  // Initialize incremental index to number of rows.
51  incrementalIndex = V.n_rows;
52  iteration = 0;
53  }
54 
61  bool IsConverged(arma::mat& W, arma::mat& H)
62  {
63  // increment iteration count
64  iteration++;
65 
66  // If the iteration count is a multiple of incremental index, return the
67  // wrapped termination policy result.
68  if (iteration % incrementalIndex == 0)
69  return tPolicy.IsConverged(W, H);
70  else
71  return false;
72  }
73 
75  const double& Index() const { return tPolicy.Index(); }
76 
78  const size_t& Iteration() const { return iteration; }
79 
81  size_t MaxIterations() const { return tPolicy.MaxIterations(); }
83  size_t& MaxIterations() { return tPolicy.MaxIterations(); }
84 
86  const TerminationPolicy& TPolicy() const { return tPolicy; }
88  TerminationPolicy& TPolicy() { return tPolicy; }
89 
90  private:
92  TerminationPolicy tPolicy;
93 
97  size_t iteration;
98 }; // class IncompleteIncrementalTermination
99 
100 } // namespace amf
101 } // namespace mlpack
102 
103 #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.
Definition: binarize.hpp:18
The core includes that mlpack expects; standard C++ includes and Armadillo.
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.
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...