mlpack  master
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 
15 namespace mlpack {
16 namespace amf {
17 
28 template<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 
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 
TerminationPolicy & TPolicy()
Modify the wrapped termination policy.
const size_t & MaxIterations() const
Access upper limit of iteration count.
const TerminationPolicy & TPolicy() const
Access the wrapped termination policy.
const size_t & Iteration() const
Get current iteration count.
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: binarize.hpp:18
void Initialize(const MatType &V)
Initializes the termination policy before stating the factorization.
void Initialize(const arma::sp_mat &V)
Initializes the termination policy before stating the factorization.
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.
const double & Index() const
Get current value of residue.