class funcmin::ADAM

Overview

Adaptive Moment Estimation (ADAM) optimizer. More…

#include <ADAM.h>
 
class ADAM {
public:
    // fields
 
    bool failedOptim;
 
    // construction
 
    ADAM();
    virtual ~ADAM();
 
    // methods
 
    template <typename ClassName, typename FuncName>
    void optimize(const gpr::EigenMatrix& x, const Eigen::VectorXd& x_ind, const Eigen::VectorXd& y, Eigen::VectorXd& w, FuncName func_to_min, ClassName& holder, double);
 
    void setAlgorithmSettings(const gpr::AdamOptimizationSettings& _settings);
};

Detailed Documentation

Adaptive Moment Estimation (ADAM) optimizer.

Methods

template <typename ClassName, typename FuncName>
void optimize(const gpr::EigenMatrix& x, const Eigen::VectorXd& x_ind, const Eigen::VectorXd& y, Eigen::VectorXd& w, FuncName func_to_min, ClassName& holder, double)

Optimization function using the ADAM algorithm.

Note

Moment vectors (m, v) are updated in-place to avoid temporaries. Bias-corrected vectors (m_hat, v_hat) and the weight update are pre-allocated before the iteration loop to eliminate per-iteration heap allocations.

Parameters:

x

Training inputs (passed to func_to_min)

x_ind

Training input indices (passed to func_to_min)

y

Training targets (passed to func_to_min)

w

On input, the initial parameters; on output, the optimized parameters.

func_to_min

The function to minimize. It must calculate energy and gradient.

holder

Object of the class that owns the function func_to_min.

void setAlgorithmSettings(const gpr::AdamOptimizationSettings& _settings)

Set parameters of the optimization algorithm. For ADAM, this includes learning_rate, beta1, beta2, epsilon, etc.