mlpack  master
lcc.hpp
Go to the documentation of this file.
1 
13 #ifndef MLPACK_METHODS_LOCAL_COORDINATE_CODING_LCC_HPP
14 #define MLPACK_METHODS_LOCAL_COORDINATE_CODING_LCC_HPP
15 
16 #include <mlpack/prereqs.hpp>
18 
19 // Include three simple dictionary initializers from sparse coding.
20 #include "../sparse_coding/nothing_initializer.hpp"
21 #include "../sparse_coding/data_dependent_random_initializer.hpp"
22 #include "../sparse_coding/random_initializer.hpp"
23 
24 namespace mlpack {
25 namespace lcc {
26 
80 {
81  public:
102  template<
103  typename DictionaryInitializer =
105  >
106  LocalCoordinateCoding(const arma::mat& data,
107  const size_t atoms,
108  const double lambda,
109  const size_t maxIterations = 0,
110  const double tolerance = 0.01,
111  const DictionaryInitializer& initializer =
112  DictionaryInitializer());
113 
126  LocalCoordinateCoding(const size_t atoms = 0,
127  const double lambda = 0.0,
128  const size_t maxIterations = 0,
129  const double tolerance = 0.01);
130 
139  template<
140  typename DictionaryInitializer =
142  >
143  void Train(const arma::mat& data,
144  const DictionaryInitializer& initializer =
145  DictionaryInitializer());
146 
153  void Encode(const arma::mat& data, arma::mat& codes);
154 
162  void OptimizeDictionary(const arma::mat& data,
163  const arma::mat& codes,
164  const arma::uvec& adjacencies);
165 
169  double Objective(const arma::mat& data,
170  const arma::mat& codes,
171  const arma::uvec& adjacencies) const;
172 
174  size_t Atoms() const { return atoms; }
176  size_t& Atoms() { return atoms; }
177 
179  const arma::mat& Dictionary() const { return dictionary; }
181  arma::mat& Dictionary() { return dictionary; }
182 
184  double Lambda() const { return lambda; }
186  double& Lambda() { return lambda; }
187 
189  size_t MaxIterations() const { return maxIterations; }
191  size_t& MaxIterations() { return maxIterations; }
192 
194  double Tolerance() const { return tolerance; }
196  double& Tolerance() { return tolerance; }
197 
199  template<typename Archive>
200  void Serialize(Archive& ar, const unsigned int /* version */);
201 
202  private:
204  size_t atoms;
205 
207  arma::mat dictionary;
208 
210  double lambda;
211 
215  double tolerance;
216 };
217 
218 } // namespace lcc
219 } // namespace mlpack
220 
221 // Include implementation.
222 #include "lcc_impl.hpp"
223 
224 #endif
double tolerance
Tolerance for main objective.
Definition: lcc.hpp:215
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:210
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: binarize.hpp:18
size_t MaxIterations() const
Get the maximum number of iterations.
Definition: lcc.hpp:189
The core includes that mlpack expects; standard C++ includes and Armadillo.
size_t atoms
Number of atoms in dictionary.
Definition: lcc.hpp:204
const arma::mat & Dictionary() const
Accessor for dictionary.
Definition: lcc.hpp:179
A data-dependent random dictionary initializer for SparseCoding.
size_t & MaxIterations()
Modify the maximum number of iterations.
Definition: lcc.hpp:191
double & Tolerance()
Modify the objective tolerance.
Definition: lcc.hpp:196
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:174
An implementation of Local Coordinate Coding (LCC) that codes data which approximately lives on a man...
Definition: lcc.hpp:79
void Serialize(Archive &ar, const unsigned int)
Serialize the model.
size_t & Atoms()
Modify the number of atoms.
Definition: lcc.hpp:176
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:194
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:181
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:213
double & Lambda()
Modify the L1 regularization parameter.
Definition: lcc.hpp:186
arma::mat dictionary
Dictionary (columns are atoms).
Definition: lcc.hpp:207
double Lambda() const
Get the L1 regularization parameter.
Definition: lcc.hpp:184