#include <Lbfgs.hpp>
Public Member Functions | |
Lbfgs (DifferentiableEnergyInterface &energy, float_t epsilon=1.0e-5, float_t line_search_f_tolerance=1.0e-4, float_t line_search_g_tolerance=0.9, size_t n_correction_steps=6, size_t n_max_line_search_steps=20) | |
bool | minimize (size_t n_max_steps, size_t &n_steps) |
Minimizes a given energy by means of a Newton type method with estimated Hessian. This class and its documentation is based on liblbfgs, a C library of Limited memory BFGS (L-BFGS) by Jorge Nocedal and Naoaki Okazaki.
imaging::Lbfgs::Lbfgs | ( | DifferentiableEnergyInterface & | energy, | |
float_t | epsilon = 1.0e-5 , |
|||
float_t | line_search_f_tolerance = 1.0e-4 , |
|||
float_t | line_search_g_tolerance = 0.9 , |
|||
size_t | n_correction_steps = 6 , |
|||
size_t | n_max_line_search_steps = 20 | |||
) |
Construct a Lbfgs object to minimize energy. To actually start the minimization the user must call minimize().
epsilon | This parameter determines the accuracy with which the solution is to be found. A minimization terminates when ||g|| < epsilon * max(1, ||x||), where ||.|| denotes the Euclidean (L2) norm. The default value is 1e-5. | |
line_search_f_tolerance | A parameter to control the accuracy of the line search routine. The default value is 1e-4. This parameter should be greater than zero and smaller than 0.5. | |
line_search_g_tolerance | The default value is 0.9. If the function gradient evaluations are inexpensive with respect to the cost of the iteration (which is sometimes the case when solving very large problems) it may be advantageous to set this parameter to a small value. A typical small value is 0.1. This parameter should be greater than the line_search_f_tolerance parameter (1e-4) and smaller than 1.0. | |
n_correction_steps | The number of corrections to approximate the inverse hessian matrix. The L-BFGS routine stores the computation results of previous n_correction_steps iterations to approximate the inverse hessian matrix of the current iteration. This parameter controls the size of the limited memories (corrections). The default value is 6. Values less than 3 are not recommended. Large values will result in excessive computing time. | |
n_max_line_search_steps | The maximum number of trials for the line search. This parameter controls the number of function and gradients evaluations per iteration for the line search routine. The default value is 20. |
Start the minimization process. At most n_max_steps will be performed. If the convergence criterion (as set in the constructor) is met before the number of maximal steps is reached the function returns true. Otherwise it returns false. The actual number of performed stops is stored in n_steps. Upon return, the energy (as set in the constructor) will have the solution as its current argument.
Implements imaging::MinimizerInterface.
References imaging::EnergyInterface::current_argument(), imaging::MessageInterface::DEBUG_ONLY, imaging::EnergyInterface::dimension(), and imaging::MessageInterface::out.