mlpack  2.0.1
complete_incremental_termination.hpp
Go to the documentation of this file.
1 
14 #ifndef __MLPACK_METHODS_AMF_COMPLETE_INCREMENTAL_TERMINATION_HPP
15 #define __MLPACK_METHODS_AMF_COMPLETE_INCREMENTAL_TERMINATION_HPP
16 
17 namespace mlpack {
18 namespace amf {
19 
30 template<class TerminationPolicy>
32 {
33  public:
40  TerminationPolicy tPolicy = TerminationPolicy()) :
41  tPolicy(tPolicy) { }
42 
48  template<class MatType>
49  void Initialize(const MatType& V)
50  {
51  tPolicy.Initialize(V);
52 
53  // Get the number of non-zero entries.
54  incrementalIndex = arma::accu(V != 0);
55  iteration = 0;
56  }
57 
64  void Initialize(const arma::sp_mat& V)
65  {
66  tPolicy.Initialize(V);
67 
68  // Get number of non-zero entries
69  incrementalIndex = V.n_nonzero;
70  iteration = 0;
71  }
72 
80  bool IsConverged(arma::mat& W, arma::mat& H)
81  {
82  // Increment iteration count.
83  iteration++;
84 
85  // If iteration count is multiple of incremental index, return wrapped class
86  // function.
87  if (iteration % incrementalIndex == 0)
88  return tPolicy.IsConverged(W, H);
89  else
90  return false;
91  }
92 
94  const double& Index() const { return tPolicy.Index(); }
95 
97  const size_t& Iteration() const { return iteration; }
98 
100  const size_t& MaxIterations() const { return tPolicy.MaxIterations(); }
102  size_t& MaxIterations() { return tPolicy.MaxIterations(); }
103 
105  const TerminationPolicy& TPolicy() const { return tPolicy; }
107  TerminationPolicy& TPolicy() { return tPolicy; }
108 
109  private:
111  TerminationPolicy tPolicy;
112 
117  size_t iteration;
118 }; // class CompleteIncrementalTermination
119 
120 } // namespace amf
121 } // namespace mlpack
122 
123 #endif // __MLPACK_METHODS_AMF_COMPLETE_INCREMENTAL_TERMINATION_HPP
124 
TerminationPolicy & TPolicy()
Modify the wrapped termination policy.
const TerminationPolicy & TPolicy() const
Access the wrapped termination policy.
const size_t & MaxIterations() const
Access upper limit of iteration count.
Linear algebra utility functions, generally performed on matrices or vectors.
void Initialize(const MatType &V)
Initializes the termination policy before stating the factorization.
const size_t & Iteration() const
Get current iteration count.
void Initialize(const arma::sp_mat &V)
Initializes the termination policy before stating the factorization.
const double & Index() const
Get current value of residue.
size_t & MaxIterations()
Modify maximum number of iterations.
TerminationPolicy tPolicy
Wrapped termination policy.
This class acts as a wrapper for basic termination policies to be used by SVDCompleteIncrementalLearn...
CompleteIncrementalTermination(TerminationPolicy tPolicy=TerminationPolicy())
Empty constructor.
bool IsConverged(arma::mat &W, arma::mat &H)
Check if termination criterion is met, if the current iteration means that each point has been visite...
size_t incrementalIndex
Number of iterations after which wrapped termination policy will be called.