13 #ifndef MLPACK_CORE_OPTIMIZERS_FUNCTION_ADD_DECOMPOSABLE_GRADIENT_HPP 14 #define MLPACK_CORE_OPTIMIZERS_FUNCTION_ADD_DECOMPOSABLE_GRADIENT_HPP 19 namespace optimization {
26 template<
typename FunctionType,
27 bool HasDecomposableEvaluateWithGradient =
28 traits::HasEvaluateWithGradient<FunctionType,
30 bool HasDecomposableGradient =
31 traits::HasGradient<FunctionType,
43 template<
typename FunctionType,
bool HasDecomposableEvaluateWithGradient>
52 const size_t batchSize)
54 static_cast<FunctionType*
>(
56 begin, gradient, batchSize);
64 template<
typename FunctionType>
80 const size_t batchSize)
84 coordinates, begin, gradient, batchSize);
93 template<
typename FunctionType,
94 bool HasDecomposableEvaluateWithGradient =
95 traits::HasEvaluateWithGradient<FunctionType,
97 bool HasDecomposableGradient =
98 traits::HasGradient<FunctionType,
110 template<
typename FunctionType,
bool HasDecomposableEvaluateWithGradient>
112 HasDecomposableEvaluateWithGradient, true>
119 const size_t batchSize)
const 121 static_cast<const FunctionType*
>(
123 begin, gradient, batchSize);
131 template<
typename FunctionType>
147 const size_t batchSize)
const 152 begin, gradient, batchSize);
161 template<
typename FunctionType,
162 bool HasDecomposableEvaluateWithGradient =
163 traits::HasEvaluateWithGradient<FunctionType,
165 bool HasDecomposableGradient =
166 traits::HasGradient<FunctionType,
180 template<
typename FunctionType,
bool HasDecomposableEvaluateWithGradient>
182 HasDecomposableEvaluateWithGradient, true>
189 const size_t batchSize)
191 FunctionType::Gradient(coordinates, begin, gradient, batchSize);
199 template<
typename FunctionType>
215 const size_t batchSize)
218 (void) FunctionType::EvaluateWithGradient(coordinates, begin, gradient,
The AddDecomposableEvaluateStatic mixin class will add a decomposable static Gradient() method if a d...
static double EvaluateWithGradient(traits::UnconstructableType &, const size_t, const size_t)
The AddDecomposableGradientConst mixin class will add a decomposable const Gradient() method if a dec...
static void Gradient(const arma::mat &coordinates, const size_t begin, arma::mat &gradient, const size_t batchSize)
Calculate the gradient and store it in the given matrix, starting at the given decomposable function ...
void Gradient(const arma::mat &coordinates, const size_t begin, arma::mat &gradient, const size_t batchSize)
void Gradient(const arma::mat &coordinates, const size_t begin, arma::mat &gradient, const size_t batchSize) const
double(*)(const arma::mat &, const size_t, arma::mat &, const size_t) DecomposableEvaluateWithGradientStaticForm
This is the form of a decomposable static EvaluateWithGradient() method.
double(FunctionType::*)(const arma::mat &, const size_t, arma::mat &, const size_t) const DecomposableEvaluateWithGradientConstForm
This is the form of a decomposable const EvaluateWithGradient() method.
void Gradient(const arma::mat &coordinates, const size_t begin, arma::mat &gradient, const size_t batchSize) const
Calculate the gradient and store it in the given matrix, starting at the given decomposable function ...
The AddDecomposableGradient mixin class will add a decomposable Gradient() method if a decomposable E...
void(FunctionType::*)(const arma::mat &, const size_t, arma::mat &, const size_t) DecomposableGradientForm
This is the form of a decomposable non-const Gradient() method.
void Gradient(const arma::mat &coordinates, const size_t begin, arma::mat &gradient, const size_t batchSize)
Calculate the gradient and store it in the given matrix, starting at the given decomposable function ...
This is a utility type used to provide unusable overloads from each of the mixin classes.
void(FunctionType::*)(const arma::mat &, const size_t, arma::mat &, const size_t) const DecomposableGradientConstForm
This the form of a decomposable const Gradient() method.
static void Gradient(const arma::mat &coordinates, const size_t begin, arma::mat &gradient, const size_t batchSize)
double(FunctionType::*)(const arma::mat &, const size_t, arma::mat &, const size_t) DecomposableEvaluateWithGradientForm
This is the form of a decomposable non-const EvaluateWithGradient() method.
The Function class is a wrapper class for any FunctionType that will add any possible derived methods...
void Gradient(traits::UnconstructableType &, const size_t, const size_t)
void(*)(const arma::mat &, const size_t, arma::mat &, const size_t) DecomposableGradientStaticForm
This is the form of a decomposable static Gradient() method.