sparse_coding.hpp
Go to the documentation of this file.
1 
13 #ifndef MLPACK_METHODS_SPARSE_CODING_SPARSE_CODING_HPP
14 #define MLPACK_METHODS_SPARSE_CODING_SPARSE_CODING_HPP
15 
16 #include <mlpack/prereqs.hpp>
18 
19 // Include our three simple dictionary initializers.
20 #include "nothing_initializer.hpp"
22 #include "random_initializer.hpp"
23 
24 namespace mlpack {
25 namespace sparse_coding {
26 
116 {
117  public:
144  template<typename DictionaryInitializer = DataDependentRandomInitializer>
145  SparseCoding(const arma::mat& data,
146  const size_t atoms,
147  const double lambda1,
148  const double lambda2 = 0,
149  const size_t maxIterations = 0,
150  const double objTolerance = 0.01,
151  const double newtonTolerance = 1e-6,
152  const DictionaryInitializer& initializer =
153  DictionaryInitializer());
154 
171  SparseCoding(const size_t atoms = 0,
172  const double lambda1 = 0,
173  const double lambda2 = 0,
174  const size_t maxIterations = 0,
175  const double objTolerance = 0.01,
176  const double newtonTolerance = 1e-6);
177 
182  template<typename DictionaryInitializer = DataDependentRandomInitializer>
183  double Train(const arma::mat& data,
184  const DictionaryInitializer& initializer =
185  DictionaryInitializer());
186 
194  void Encode(const arma::mat& data, arma::mat& codes);
195 
207  double OptimizeDictionary(const arma::mat& data,
208  const arma::mat& codes,
209  const arma::uvec& adjacencies);
210 
214  void ProjectDictionary();
215 
219  double Objective(const arma::mat& data, const arma::mat& codes) const;
220 
222  const arma::mat& Dictionary() const { return dictionary; }
224  arma::mat& Dictionary() { return dictionary; }
225 
227  size_t Atoms() const { return atoms; }
229  size_t& Atoms() { return atoms; }
230 
232  double Lambda1() const { return lambda1; }
234  double& Lambda1() { return lambda1; }
235 
237  double Lambda2() const { return lambda2; }
239  double& Lambda2() { return lambda2; }
240 
242  size_t MaxIterations() const { return maxIterations; }
244  size_t& MaxIterations() { return maxIterations; }
245 
247  double ObjTolerance() const { return objTolerance; }
249  double& ObjTolerance() { return objTolerance; }
250 
252  double NewtonTolerance() const { return newtonTolerance; }
254  double& NewtonTolerance() { return newtonTolerance; }
255 
257  template<typename Archive>
258  void serialize(Archive& ar, const unsigned int /* version */);
259 
260  private:
262  size_t atoms;
263 
265  arma::mat dictionary;
266 
268  double lambda1;
270  double lambda2;
271 
273  size_t maxIterations;
275  double objTolerance;
277  double newtonTolerance;
278 };
279 
280 } // namespace sparse_coding
281 } // namespace mlpack
282 
283 // Include implementation.
284 #include "sparse_coding_impl.hpp"
285 
286 #endif
const arma::mat & Dictionary() const
Access the dictionary.
double NewtonTolerance() const
Get the tolerance for Newton&#39;s method (dictionary optimization step).
strip_type.hpp
Definition: add_to_po.hpp:21
void ProjectDictionary()
Project each atom of the dictionary back onto the unit ball, if necessary.
void Encode(const arma::mat &data, arma::mat &codes)
Sparse code each point in the given dataset via LARS, using the current dictionary and store the enco...
The core includes that mlpack expects; standard C++ includes and Armadillo.
double & NewtonTolerance()
Modify the tolerance for Newton&#39;s method (dictionary optimization step).
double Train(const arma::mat &data, const DictionaryInitializer &initializer=DictionaryInitializer())
Train the sparse coding model on the given dataset.
double Objective(const arma::mat &data, const arma::mat &codes) const
Compute the objective function.
double & ObjTolerance()
Modify the objective tolerance.
double & Lambda1()
Modify the L1 regularization term.
double Lambda2() const
Access the L2 regularization term.
size_t MaxIterations() const
Get the maximum number of iterations.
double ObjTolerance() const
Get the objective tolerance.
size_t & Atoms()
Modify the number of atoms.
An implementation of Sparse Coding with Dictionary Learning that achieves sparsity via an l1-norm reg...
size_t & MaxIterations()
Modify the maximum number of iterations.
SparseCoding(const arma::mat &data, const size_t atoms, const double lambda1, const double lambda2=0, const size_t maxIterations=0, const double objTolerance=0.01, const double newtonTolerance=1e-6, const DictionaryInitializer &initializer=DictionaryInitializer())
Set the parameters to SparseCoding.
size_t Atoms() const
Access the number of atoms.
double Lambda1() const
Access the L1 regularization term.
void serialize(Archive &ar, const unsigned int)
Serialize the sparse coding model.
arma::mat & Dictionary()
Modify the dictionary.
double & Lambda2()
Modify the L2 regularization term.
double OptimizeDictionary(const arma::mat &data, const arma::mat &codes, const arma::uvec &adjacencies)
Learn dictionary via Newton method based on Lagrange dual.