SG++-Doxygen-Documentation
sgpp::solver::Fista< F > Class Template Reference

Fast Iterative Shrinkage Tresholding Algorithm is a solver for least-squares problems. More...

#include <Fista.hpp>

Inheritance diagram for sgpp::solver::Fista< F >:
sgpp::solver::FistaBase

Public Member Functions

 Fista (F g)
 Fista. More...
 
void solve (base::OperationMultipleEval &op, base::DataVector &weights, const base::DataVector &classes, size_t maxIt, double threshold, double L=0.5) override
 solve solves the problem. More...
 
- Public Member Functions inherited from sgpp::solver::FistaBase
double getL ()
 

Additional Inherited Members

- Protected Attributes inherited from sgpp::solver::FistaBase
double L = 0.5
 

Detailed Description

template<typename F>
class sgpp::solver::Fista< F >

Fast Iterative Shrinkage Tresholding Algorithm is a solver for least-squares problems.

It can solve all problems that are seperable in a least-squares part and a convex, not necessarily smooth other function. The other function is a template argument. FISTA is an optimal first order method for this problem class.

Constructor & Destructor Documentation

◆ Fista()

template<typename F>
sgpp::solver::Fista< F >::Fista ( g)
inlineexplicit

Fista.

Parameters
gis the regularization function.

Member Function Documentation

◆ solve()

template<typename F>
void sgpp::solver::Fista< F >::solve ( base::OperationMultipleEval op,
base::DataVector weights,
const base::DataVector classes,
size_t  maxIt,
double  threshold,
double  L = 0.5 
)
inlineoverridevirtual

solve solves the problem.

Parameters
op
weightsis the first guess for the solution
classesis the target vector
maxItis the maximum number of iterations
thresholdis the desired accuracy
Lis a guess for the Lipschitz number of the gradient of the least squares part. It is used to improve the speed of the linesearch, and should be 0.5 for the first iteration. Has to be positive.

Implements sgpp::solver::FistaBase.

References sgpp::base::DataVector::add(), chess::b, sgpp::base::DataVector::dotProduct(), sgpp::base::DataVector::getSize(), sgpp::solver::FistaBase::L, sgpp::base::OperationMultipleEval::mult(), sgpp::base::DataVector::mult(), sgpp::base::OperationMultipleEval::multTranspose(), sgpp::base::DataVector::sqr(), sgpp::base::DataVector::sub(), and sgpp::base::DataVector::sum().


The documentation for this class was generated from the following file: