12 #ifndef MLPACK_CORE_OPTIMIZERS_SVRG_BARZILIA_BORWEIN_DECAY_HPP 13 #define MLPACK_CORE_OPTIMIZERS_SVRG_BARZILIA_BORWEIN_DECAY_HPP 18 namespace optimization {
51 const double eps = 1e-7) :
53 maxStepSize(maxStepSize)
76 void Update(
const arma::mat& iterate,
77 const arma::mat& iterate0,
79 const arma::mat& fullGradient,
80 const size_t numBatches,
83 if (!fullGradient0.is_empty())
86 stepSize = std::pow(arma::norm(iterate - iterate0), 2.0) /
87 (arma::dot(iterate - iterate0, fullGradient - fullGradient0) + eps) /
90 stepSize = std::min(stepSize, maxStepSize);
93 fullGradient0 = std::move(fullGradient);
98 arma::mat fullGradient0;
110 #endif // MLPACK_CORE_OPTIMIZERS_SVRG_BARZILIA_BORWEIN_DECAY_HPP BarzilaiBorweinDecay(const double maxStepSize=DBL_MAX, const double eps=1e-7)
The core includes that mlpack expects; standard C++ includes and Armadillo.
Barzilai-Borwein decay policy for Stochastic variance reduced gradient (SVRG).
void Update(const arma::mat &iterate, const arma::mat &iterate0, const arma::mat &, const arma::mat &fullGradient, const size_t numBatches, double &stepSize)
Barzilai-Borwein update step for SVRG.
void Initialize(const size_t, const size_t)
The Initialize method is called by SVRG Optimizer method before the start of the iteration update pro...