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.