15 #ifndef __MLPACK_METHODS_SPARSE_CODING_SPARSE_CODING_HPP
16 #define __MLPACK_METHODS_SPARSE_CODING_SPARSE_CODING_HPP
27 namespace sparse_coding {
146 template<
typename DictionaryInitializer = DataDependentRandomInitializer>
154 const DictionaryInitializer& initializer =
155 DictionaryInitializer());
174 const double lambda1,
183 template<
typename DictionaryInitializer = DataDependentRandomInitializer>
184 void Train(
const arma::mat& data,
185 const DictionaryInitializer& initializer =
186 DictionaryInitializer());
195 void Encode(
const arma::mat& data, arma::mat& codes);
209 const arma::mat& codes,
210 const arma::uvec& adjacencies);
220 double Objective(
const arma::mat& data,
const arma::mat& codes)
const;
258 template<
typename Archive>
259 void Serialize(Archive& ar,
const unsigned int );
285 #include "sparse_coding_impl.hpp"
size_t Atoms() const
Access the number of atoms.
size_t MaxIterations() const
Get the maximum number of iterations.
Linear algebra utility functions, generally performed on matrices or vectors.
void ProjectDictionary()
Project each atom of the dictionary back onto the unit ball, if necessary.
double Lambda1() const
Access the L1 regularization term.
double newtonTolerance
Tolerance for Newton's method (dictionary training).
const arma::mat & Dictionary() const
Access the dictionary.
double & Lambda1()
Modify the L1 regularization term.
arma::mat & Dictionary()
Modify the dictionary.
double Lambda2() const
Access the L2 regularization term.
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.
double ObjTolerance() const
Get the objective tolerance.
double objTolerance
Tolerance for main objective.
size_t atoms
Number of atoms.
void Train(const arma::mat &data, const DictionaryInitializer &initializer=DictionaryInitializer())
Train the sparse coding model on the given dataset.
double lambda2
l2 regularization term.
An implementation of Sparse Coding with Dictionary Learning that achieves sparsity via an l1-norm reg...
arma::mat dictionary
Dictionary (columns are atoms).
double & ObjTolerance()
Modify the objective tolerance.
Include all of the base components required to write MLPACK methods, and the main MLPACK Doxygen docu...
void Serialize(Archive &ar, const unsigned int)
Serialize the sparse coding model.
size_t & Atoms()
Modify the number of atoms.
double lambda1
l1 regularization term.
double & NewtonTolerance()
Modify the tolerance for Newton's method (dictionary optimization step).
size_t & MaxIterations()
Modify the maximum number of iterations.
double NewtonTolerance() const
Get the tolerance for Newton's method (dictionary optimization step).
double Objective(const arma::mat &data, const arma::mat &codes) const
Compute the objective function.
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.
size_t maxIterations
Maximum number of iterations during training.
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...