Turi Create  4.0
Newton Method

Functions

template<typename Vector = DenseVector>
solver_return turi::optimization::newton_method (second_order_opt_interface &model, const DenseVector &init_point, std::map< std::string, flexible_type > &opts, const std::shared_ptr< smooth_regularizer_interface > reg=NULL)
 

Detailed Description

Function Documentation

◆ newton_method()

template<typename Vector = DenseVector>
solver_return turi::optimization::newton_method ( second_order_opt_interface model,
const DenseVector &  init_point,
std::map< std::string, flexible_type > &  opts,
const std::shared_ptr< smooth_regularizer_interface reg = NULL 
)
inline

Solve a second_order_optimization_interface model with a (dense) hessian Newton method.

Parameters
[in,out]modelModel with second order optimization interface.
[in]init_pointStarting point for the solver.
[in,out]optsSolver options.
[in]regShared ptr to an interface to a smooth regularizer.
[out]statsSolver return stats.
Template Parameters
VectorSparse or dense gradient representation.
Note
The hessian is always computed as a dense matrix. Only gradients are allowed to be sparse. The implementation of Newton method must change when the hessian is sparse. I.e we can no longer perform an LDLT decomposition to invert the hessian matrix. We have to switch methods to Conjugate gradient or Sparse LDLT decomposition.

Definition at line 55 of file newton_method-inl.hpp.