mlpack 3.4.2
complete_incremental_termination.hpp
Go to the documentation of this file.
1
12#ifndef MLPACK_METHODS_AMF_COMPLETE_INCREMENTAL_TERMINATION_HPP
13#define MLPACK_METHODS_AMF_COMPLETE_INCREMENTAL_TERMINATION_HPP
14
15namespace mlpack {
16namespace amf {
17
28template<class TerminationPolicy>
30{
31 public:
38 TerminationPolicy tPolicy = TerminationPolicy()) :
39 tPolicy(tPolicy) { }
40
46 template<class MatType>
47 void Initialize(const MatType& V)
48 {
49 tPolicy.Initialize(V);
50
51 // Get the number of non-zero entries.
52 incrementalIndex = arma::accu(V != 0);
53 iteration = 0;
54 }
55
62 void Initialize(const arma::sp_mat& V)
63 {
64 tPolicy.Initialize(V);
65
66 // Get number of non-zero entries
67 incrementalIndex = V.n_nonzero;
68 iteration = 0;
69 }
70
78 bool IsConverged(arma::mat& W, arma::mat& H)
79 {
80 // Increment iteration count.
81 iteration++;
82
83 // If iteration count is multiple of incremental index, return wrapped class
84 // function.
85 if (iteration % incrementalIndex == 0)
86 return tPolicy.IsConverged(W, H);
87 else
88 return false;
89 }
90
92 const double& Index() const { return tPolicy.Index(); }
93
95 const size_t& Iteration() const { return iteration; }
96
98 const size_t& MaxIterations() const { return tPolicy.MaxIterations(); }
100 size_t& MaxIterations() { return tPolicy.MaxIterations(); }
101
103 const TerminationPolicy& TPolicy() const { return tPolicy; }
105 TerminationPolicy& TPolicy() { return tPolicy; }
106
107 private:
109 TerminationPolicy tPolicy;
110
113 size_t incrementalIndex;
115 size_t iteration;
116}; // class CompleteIncrementalTermination
117
118} // namespace amf
119} // namespace mlpack
120
121#endif // MLPACK_METHODS_AMF_COMPLETE_INCREMENTAL_TERMINATION_HPP
122
This class acts as a wrapper for basic termination policies to be used by SVDCompleteIncrementalLearn...
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...
TerminationPolicy & TPolicy()
Modify the wrapped termination policy.
const double & Index() const
Get current value of residue.
CompleteIncrementalTermination(TerminationPolicy tPolicy=TerminationPolicy())
Empty constructor.
void Initialize(const arma::sp_mat &V)
Initializes the termination policy before stating the factorization.
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.
const size_t & MaxIterations() const
Access upper limit of iteration count.
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1