13 #ifndef MLPACK_CORE_OPTIMIZERS_FUNCTION_ADD_DECOMPOSABLE_EVALUATE_W_GRADIENT_HPP 14 #define MLPACK_CORE_OPTIMIZERS_FUNCTION_ADD_DECOMPOSABLE_EVALUATE_W_GRADIENT_HPP 19 namespace optimization {
26 template<
typename FunctionType,
28 bool HasDecomposableEvaluateGradient = traits::HasNonConstSignatures<
38 bool HasDecomposableEvaluateWithGradient =
39 traits::HasEvaluateWithGradient<FunctionType,
53 template<
typename FunctionType,
bool HasDecomposableEvaluateGradient>
55 HasDecomposableEvaluateGradient, true>
62 const size_t batchSize)
64 return static_cast<FunctionType*
>(
66 coordinates, begin, gradient, batchSize);
75 template<
typename FunctionType>
92 const size_t batchSize)
94 const double objective =
109 template<
typename FunctionType,
119 bool HasDecomposableEvaluateWithGradient =
120 traits::HasEvaluateWithGradient<FunctionType,
134 template<
typename FunctionType,
bool HasDecomposableEvaluateGradient>
136 HasDecomposableEvaluateGradient, true>
143 const size_t batchSize)
const 145 return static_cast<const FunctionType*
>(
147 coordinates, begin, gradient, batchSize);
156 template<
typename FunctionType>
173 const size_t batchSize)
const 175 const double objective =
179 begin, gradient, batchSize);
190 template<
typename FunctionType,
191 bool HasDecomposableEvaluateGradient =
192 traits::HasEvaluate<FunctionType,
193 traits::DecomposableEvaluateStaticForm>::value &&
194 traits::HasGradient<FunctionType,
196 bool HasDecomposableEvaluateWithGradient =
197 traits::HasEvaluateWithGradient<FunctionType,
211 template<
typename FunctionType,
bool HasDecomposableEvaluateGradient>
213 HasDecomposableEvaluateGradient, true>
220 const size_t batchSize)
222 return FunctionType::EvaluateWithGradient(coordinates, begin, gradient,
232 template<
typename FunctionType>
249 const size_t batchSize)
const 251 const double objective = FunctionType::Evaluate(coordinates, begin,
253 FunctionType::Gradient(coordinates, begin, gradient, batchSize);
double EvaluateWithGradient(const arma::mat &coordinates, const size_t begin, arma::mat &gradient, const size_t batchSize) const
Return both the evaluated objective function and its gradient, storing the gradient in the given matr...
double EvaluateWithGradient(const arma::mat &coordinates, const size_t begin, arma::mat &gradient, const size_t batchSize)
Return both the evaluated objective function and its gradient, storing the gradient in the given matr...
The AddDecomposableEvaluateWithGradient mixin class will add a decomposable EvaluateWithGradient() me...
double(FunctionType::*)(const arma::mat &, const size_t, const size_t) const DecomposableEvaluateConstForm
This is the form of a decomposable const Evaluate() method.
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.
double EvaluateWithGradient(const arma::mat &coordinates, const size_t begin, arma::mat &gradient, const size_t batchSize)
The AddDecomposableEvaluateWithGradientStatic mixin class will add a decomposable static EvaluateWith...
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.
The AddDecomposableEvaluateWithGradientConst mixin class will add a decomposable const EvaluateWithGr...
This is a utility type used to provide unusable overloads from each of the mixin classes.
static double EvaluateWithGradient(const arma::mat &coordinates, const size_t begin, arma::mat &gradient, const size_t batchSize)
void(FunctionType::*)(const arma::mat &, const size_t, arma::mat &, const size_t) const DecomposableGradientConstForm
This the form of a decomposable const Gradient() method.
double EvaluateWithGradient(const arma::mat &coordinates, const size_t begin, arma::mat &gradient, const size_t batchSize) const
double EvaluateWithGradient(const arma::mat &coordinates, const size_t begin, arma::mat &gradient, const size_t batchSize) const
Return both the evaluated objective function and its gradient, storing the gradient in the given matr...
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.
double EvaluateWithGradient(traits::UnconstructableType &, const size_t, const size_t)
Utility struct: sometimes we want to know if we have two functions available, and that at least one o...
The Function class is a wrapper class for any FunctionType that will add any possible derived methods...
double(*)(const arma::mat &, const size_t, const size_t) DecomposableEvaluateStaticForm
This is the form of a decomposable static Evaluate() method.
double(FunctionType::*)(const arma::mat &, const size_t, const size_t) DecomposableEvaluateForm
This is the form of a decomposable Evaluate() method.
void(*)(const arma::mat &, const size_t, arma::mat &, const size_t) DecomposableGradientStaticForm
This is the form of a decomposable static Gradient() method.