A collection of methods for gradient-based descent. More...
#include "inc/util/scalars.h"
Namespaces | |
namespace | syten |
Syten namespace. | |
namespace | syten::GradientOpt |
Namespace for gradient-based optimisers. | |
Functions | |
template<typename Value , typename FunctionEval , typename GradientEval > | |
auto | syten::GradientOpt::gradient_descent (Value x, FunctionEval func, GradientEval grad, SRDef step_size, Index num_steps) |
Straightforward gradient descent. More... | |
template<typename Value , typename FunctionEval , typename GradientEval , typename IsImprovement > | |
auto | syten::GradientOpt::gradient_descent_adaptive_stepsize (Value x, FunctionEval func, GradientEval grad, IsImprovement improv, Index num_steps) |
Gradient descent with adaptive stepsize. More... | |
template<typename X , typename FunctionEval , typename GradientEval , typename LinesearchEval , typename RandomStep , typename Terminator > | |
auto | syten::GradientOpt::gradient_descent_linesearch (X x, FunctionEval func, GradientEval grad, LinesearchEval lin, RandomStep rand, Terminator terminate, Index num_steps=100, Index ls_num_steps=50, SRDef ls_lower=0, SRDef ls_upper=1) |
Attempt at a gradient descent with linesearch. More... | |
template<typename Hp > | |
SRDef | syten::GradientOpt::linesearch (Hp h_hp, SRDef lower, SRDef upper, Index const max_steps) |
Attempt at a bisecting line search. More... | |
A collection of methods for gradient-based descent.
All of these methods assume that in order to evaluate the gradient, it is necessary to first evaluate the function value itself.