mlpack  2.0.1
lcc.hpp
Go to the documentation of this file.
1 
15 #ifndef __MLPACK_METHODS_LOCAL_COORDINATE_CODING_LCC_HPP
16 #define __MLPACK_METHODS_LOCAL_COORDINATE_CODING_LCC_HPP
17 
18 #include <mlpack/core.hpp>
20 
21 // Include three simple dictionary initializers from sparse coding.
22 #include "../sparse_coding/nothing_initializer.hpp"
23 #include "../sparse_coding/data_dependent_random_initializer.hpp"
24 #include "../sparse_coding/random_initializer.hpp"
25 
26 namespace mlpack {
27 namespace lcc {
28 
82 {
83  public:
104  template<
105  typename DictionaryInitializer =
107  >
108  LocalCoordinateCoding(const arma::mat& data,
109  const size_t atoms,
110  const double lambda,
111  const size_t maxIterations = 0,
112  const double tolerance = 0.01,
113  const DictionaryInitializer& initializer =
114  DictionaryInitializer());
115 
127  LocalCoordinateCoding(const size_t atoms,
128  const double lambda,
129  const size_t maxIterations = 0,
130  const double tolerance = 0.01);
131 
140  template<
141  typename DictionaryInitializer =
143  >
144  void Train(const arma::mat& data,
145  const DictionaryInitializer& initializer =
146  DictionaryInitializer());
147 
154  void Encode(const arma::mat& data, arma::mat& codes);
155 
163  void OptimizeDictionary(const arma::mat& data,
164  const arma::mat& codes,
165  const arma::uvec& adjacencies);
166 
170  double Objective(const arma::mat& data,
171  const arma::mat& codes,
172  const arma::uvec& adjacencies) const;
173 
175  size_t Atoms() const { return atoms; }
177  size_t& Atoms() { return atoms; }
178 
180  const arma::mat& Dictionary() const { return dictionary; }
182  arma::mat& Dictionary() { return dictionary; }
183 
185  double Lambda() const { return lambda; }
187  double& Lambda() { return lambda; }
188 
190  size_t MaxIterations() const { return maxIterations; }
192  size_t& MaxIterations() { return maxIterations; }
193 
195  double Tolerance() const { return tolerance; }
197  double& Tolerance() { return tolerance; }
198 
200  template<typename Archive>
201  void Serialize(Archive& ar, const unsigned int /* version */);
202 
203  private:
205  size_t atoms;
206 
208  arma::mat dictionary;
209 
211  double lambda;
212 
216  double tolerance;
217 };
218 
219 } // namespace lcc
220 } // namespace mlpack
221 
222 // Include implementation.
223 #include "lcc_impl.hpp"
224 
225 #endif
double tolerance
Tolerance for main objective.
Definition: lcc.hpp:216
void OptimizeDictionary(const arma::mat &data, const arma::mat &codes, const arma::uvec &adjacencies)
Learn dictionary by solving linear system.
double lambda
l1 regularization term.
Definition: lcc.hpp:211
Linear algebra utility functions, generally performed on matrices or vectors.
size_t MaxIterations() const
Get the maximum number of iterations.
Definition: lcc.hpp:190
size_t atoms
Number of atoms in dictionary.
Definition: lcc.hpp:205
const arma::mat & Dictionary() const
Accessor for dictionary.
Definition: lcc.hpp:180
A data-dependent random dictionary initializer for SparseCoding.
size_t & MaxIterations()
Modify the maximum number of iterations.
Definition: lcc.hpp:192
double & Tolerance()
Modify the objective tolerance.
Definition: lcc.hpp:197
void Train(const arma::mat &data, const DictionaryInitializer &initializer=DictionaryInitializer())
Run local coordinate coding.
size_t Atoms() const
Get the number of atoms.
Definition: lcc.hpp:175
An implementation of Local Coordinate Coding (LCC) that codes data which approximately lives on a man...
Definition: lcc.hpp:81
void Serialize(Archive &ar, const unsigned int)
Serialize the model.
size_t & Atoms()
Modify the number of atoms.
Definition: lcc.hpp:177
Include all of the base components required to write MLPACK methods, and the main MLPACK Doxygen docu...
double Objective(const arma::mat &data, const arma::mat &codes, const arma::uvec &adjacencies) const
Compute objective function given the list of adjacencies.
double Tolerance() const
Get the objective tolerance.
Definition: lcc.hpp:195
LocalCoordinateCoding(const arma::mat &data, const size_t atoms, const double lambda, const size_t maxIterations=0, const double tolerance=0.01, const DictionaryInitializer &initializer=DictionaryInitializer())
Set the parameters to LocalCoordinateCoding, and train the dictionary.
arma::mat & Dictionary()
Mutator for dictionary.
Definition: lcc.hpp:182
void Encode(const arma::mat &data, arma::mat &codes)
Code each point via distance-weighted LARS.
size_t maxIterations
Maximum number of iterations during training.
Definition: lcc.hpp:214
double & Lambda()
Modify the L1 regularization parameter.
Definition: lcc.hpp:187
arma::mat dictionary
Dictionary (columns are atoms).
Definition: lcc.hpp:208
double Lambda() const
Get the L1 regularization parameter.
Definition: lcc.hpp:185