mlpack 3.4.2
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
17namespace mlpack {
18namespace amf {
19
27template <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
95 size_t incrementalIndex;
97 size_t iteration;
98}; // class IncompleteIncrementalTermination
99
100} // namespace amf
101} // namespace mlpack
102
103#endif
This class acts as a wrapper for basic termination policies to be used by SVDIncompleteIncrementalLea...
bool IsConverged(arma::mat &W, arma::mat &H)
Check if termination criterio is met.
TerminationPolicy & TPolicy()
Modify the wrapped termination policy.
size_t MaxIterations() const
Access maximum number of iterations.
const double & Index() const
Get current value of residue.
size_t & MaxIterations()
Modify maximum number of iterations.
void Initialize(const MatType &V)
Initializes the termination policy before stating the factorization.
const TerminationPolicy & TPolicy() const
Access the wrapped termination policy.
const size_t & Iteration() const
Get current iteration count.
IncompleteIncrementalTermination(TerminationPolicy tPolicy=TerminationPolicy())
Empty constructor.
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
The core includes that mlpack expects; standard C++ includes and Armadillo.