mlpack  2.0.1
nca_softmax_error_function.hpp
Go to the documentation of this file.
1 
15 #ifndef __MLPACK_METHODS_NCA_NCA_SOFTMAX_ERROR_FUNCTION_HPP
16 #define __MLPACK_METHODS_NCA_NCA_SOFTMAX_ERROR_FUNCTION_HPP
17 
18 #include <mlpack/core.hpp>
19 
20 namespace mlpack {
21 namespace nca {
22 
43 template<typename MetricType = metric::SquaredEuclideanDistance>
45 {
46  public:
57  SoftmaxErrorFunction(const arma::mat& dataset,
58  const arma::Row<size_t>& labels,
59  MetricType metric = MetricType());
60 
68  double Evaluate(const arma::mat& covariance);
69 
80  double Evaluate(const arma::mat& covariance, const size_t i);
81 
90  void Gradient(const arma::mat& covariance, arma::mat& gradient);
91 
103  void Gradient(const arma::mat& covariance,
104  const size_t i,
105  arma::mat& gradient);
106 
110  const arma::mat GetInitialPoint() const;
111 
116  size_t NumFunctions() const { return dataset.n_cols; }
117 
118  private:
120  const arma::mat& dataset;
122  const arma::Row<size_t>& labels;
123 
125  MetricType metric;
126 
128  arma::mat lastCoordinates;
130  arma::mat stretchedDataset;
132  arma::vec p;
135  arma::vec denominators;
136 
139 
153  void Precalculate(const arma::mat& coordinates);
154 };
155 
156 } // namespace nca
157 } // namespace mlpack
158 
159 // Include implementation.
160 #include "nca_softmax_error_function_impl.hpp"
161 
162 #endif
The "softmax" stochastic neighbor assignment probability function.
Linear algebra utility functions, generally performed on matrices or vectors.
const arma::Row< size_t > & labels
Labels for each point in the dataset.
arma::vec denominators
Holds denominators for calculation of p_ij, for the non-separable Evaluate() and Gradient().
const arma::mat GetInitialPoint() const
Get the initial point.
size_t NumFunctions() const
Get the number of functions the objective function can be decomposed into.
void Gradient(const arma::mat &covariance, arma::mat &gradient)
Evaluate the gradient of the softmax function for the given covariance matrix.
bool precalculated
False if nothing has ever been precalculated (only at construction time).
SoftmaxErrorFunction(const arma::mat &dataset, const arma::Row< size_t > &labels, MetricType metric=MetricType())
Initialize with the given kernel; useful when the kernel has some state to store, which is set elsewh...
Include all of the base components required to write MLPACK methods, and the main MLPACK Doxygen docu...
double Evaluate(const arma::mat &covariance)
Evaluate the softmax function for the given covariance matrix.
arma::vec p
Holds calculated p_i, for the non-separable Evaluate() and Gradient().
MetricType metric
The instantiated metric.
void Precalculate(const arma::mat &coordinates)
Precalculate the denominators and numerators that will make up the p_ij, but only if the coordinates ...
arma::mat lastCoordinates
Last coordinates. Used for the non-separable Evaluate() and Gradient().
arma::mat stretchedDataset
Stretched dataset. Kept internal to avoid memory reallocations.