![]() |
Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages |
#include <itkPreconditionedGradientDescentOptimizer.h>
Implement a gradient descent optimizer.
PreconditionedGradientDescentOptimizer implements a simple gradient descent optimizer. At each iteration the current position is updated according to
The learning rate is a fixed scalar defined via SetLearningRate(). The optimizer steps through a user defined number of iterations; no convergence checking is done.
Additionally, user can scale each component of the
The difference of this class with the itk::GradientDescentOptimizer is that it's based on the ScaledSingleValuedNonLinearOptimizer
Definition at line 55 of file itkPreconditionedGradientDescentOptimizer.h.
Public Member Functions | |
virtual void | AdvanceOneStep () |
const cholmod_common * | GetCholmodCommon () const |
const cholmod_factor * | GetCholmodFactor () const |
virtual const char * | GetClassName () const |
virtual double | GetConditionNumber () const |
virtual unsigned int | GetCurrentIteration () const |
virtual double | GetDiagonalWeight () const |
virtual const DerivativeType & | GetGradient () |
virtual double | GetLargestEigenValue () const |
virtual const double & | GetLearningRate () |
virtual double | GetMinimumGradientElementMagnitude () const |
virtual const unsigned long & | GetNumberOfIterations () |
virtual const DerivativeType & | GetSearchDirection () |
virtual double | GetSparsity () const |
virtual const StopConditionType & | GetStopCondition () |
virtual const double & | GetValue () |
ITK_DISALLOW_COPY_AND_MOVE (PreconditionedGradientDescentOptimizer) | |
virtual void | MetricErrorResponse (ExceptionObject &err) |
virtual void | ResumeOptimization () |
virtual void | SetDiagonalWeight (double _arg) |
virtual void | SetLearningRate (double _arg) |
virtual void | SetMinimumGradientElementMagnitude (double _arg) |
virtual void | SetNumberOfIterations (unsigned long _arg) |
virtual void | SetPreconditionMatrix (PreconditionType &precondition) |
virtual void | StartOptimization () |
virtual void | StopOptimization () |
![]() | |
virtual const char * | GetClassName () const |
const ParametersType & | GetCurrentPosition () const override |
virtual bool | GetMaximize () const |
virtual const ScaledCostFunctionType * | GetScaledCostFunction () |
virtual const ParametersType & | GetScaledCurrentPosition () |
bool | GetUseScales () const |
virtual void | InitializeScales () |
ITK_DISALLOW_COPY_AND_MOVE (ScaledSingleValuedNonLinearOptimizer) | |
virtual void | MaximizeOff () |
virtual void | MaximizeOn () |
void | SetCostFunction (CostFunctionType *costFunction) override |
virtual void | SetMaximize (bool _arg) |
virtual void | SetUseScales (bool arg) |
Static Public Member Functions | |
static Pointer | New () |
![]() | |
static Pointer | New () |
Protected Types | |
using | cholmod_l = int CInt |
Protected Member Functions | |
virtual void | CholmodSolve (const DerivativeType &gradient, DerivativeType &searchDirection, int solveType=CHOLMOD_A) |
PreconditionedGradientDescentOptimizer () | |
void | PrintSelf (std::ostream &os, Indent indent) const |
virtual | ~PreconditionedGradientDescentOptimizer () |
![]() | |
virtual void | GetScaledDerivative (const ParametersType ¶meters, DerivativeType &derivative) const |
virtual MeasureType | GetScaledValue (const ParametersType ¶meters) const |
virtual void | GetScaledValueAndDerivative (const ParametersType ¶meters, MeasureType &value, DerivativeType &derivative) const |
void | PrintSelf (std::ostream &os, Indent indent) const override |
ScaledSingleValuedNonLinearOptimizer () | |
void | SetCurrentPosition (const ParametersType ¶m) override |
virtual void | SetScaledCurrentPosition (const ParametersType ¶meters) |
~ScaledSingleValuedNonLinearOptimizer () override=default | |
Protected Attributes | |
cholmod_common * | m_CholmodCommon |
cholmod_factor * | m_CholmodFactor { nullptr } |
cholmod_sparse * | m_CholmodGradient { nullptr } |
double | m_ConditionNumber { 1.0 } |
DerivativeType | m_Gradient |
double | m_LargestEigenValue { 1.0 } |
double | m_LearningRate { 1.0 } |
DerivativeType | m_SearchDirection |
double | m_Sparsity { 1.0 } |
StopConditionType | m_StopCondition { MaximumNumberOfIterations } |
![]() | |
ScaledCostFunctionPointer | m_ScaledCostFunction |
ParametersType | m_ScaledCurrentPosition |
Private Attributes | |
unsigned long | m_CurrentIteration { 0 } |
double | m_DiagonalWeight { 1e-6 } |
double | m_MinimumGradientElementMagnitude { 1e-10 } |
unsigned long | m_NumberOfIterations { 100 } |
bool | m_Stop { false } |
double | m_Value { 0.0 } |
|
protected |
Cholmod index type: define at central place
Definition at line 202 of file itkPreconditionedGradientDescentOptimizer.h.
using itk::PreconditionedGradientDescentOptimizer::ConstPointer = SmartPointer<const Self> |
Definition at line 64 of file itkPreconditionedGradientDescentOptimizer.h.
using itk::PreconditionedGradientDescentOptimizer::Pointer = SmartPointer<Self> |
Definition at line 63 of file itkPreconditionedGradientDescentOptimizer.h.
using itk::PreconditionedGradientDescentOptimizer::PreconditionType = vnl_sparse_matrix<PreconditionValueType> |
Definition at line 86 of file itkPreconditionedGradientDescentOptimizer.h.
using itk::PreconditionedGradientDescentOptimizer::PreconditionValueType = DerivativeType::ValueType |
Some typedefs for computing the SelfHessian
Definition at line 82 of file itkPreconditionedGradientDescentOptimizer.h.
using itk::ScaledSingleValuedNonLinearOptimizer::ScaledCostFunctionPointer = ScaledCostFunctionType::Pointer |
Definition at line 87 of file itkScaledSingleValuedNonLinearOptimizer.h.
using itk::ScaledSingleValuedNonLinearOptimizer::ScaledCostFunctionType = ScaledSingleValuedCostFunction |
Definition at line 86 of file itkScaledSingleValuedNonLinearOptimizer.h.
using itk::ScaledSingleValuedNonLinearOptimizer::ScalesType = NonLinearOptimizer::ScalesType |
Definition at line 85 of file itkScaledSingleValuedNonLinearOptimizer.h.
Standard class typedefs.
Definition at line 61 of file itkPreconditionedGradientDescentOptimizer.h.
using itk::PreconditionedGradientDescentOptimizer::Superclass = ScaledSingleValuedNonLinearOptimizer |
Definition at line 62 of file itkPreconditionedGradientDescentOptimizer.h.
Codes of stopping conditions The MinimumStepSize stopcondition never occurs, but may be implemented in inheriting classes.
Enumerator | |
---|---|
MaximumNumberOfIterations | |
MetricError | |
MinimumStepSize |
Definition at line 92 of file itkPreconditionedGradientDescentOptimizer.h.
|
protected |
|
protectedvirtual |
|
virtual |
Advance one step following the gradient direction.
Reimplemented in itk::StochasticPreconditionedGradientDescentOptimizer.
|
protectedvirtual |
Solve Hx = g, using the Cholesky decomposition of the preconditioner. Matlab notation: x = L'(L\g) = Pg = searchDirection The last argument can be used to also solve different systems, like L x = g.
|
inline |
Temporary functions, for debugging
Definition at line 160 of file itkPreconditionedGradientDescentOptimizer.h.
|
inline |
Definition at line 167 of file itkPreconditionedGradientDescentOptimizer.h.
|
virtual |
Run-time type information (and related methods).
Reimplemented from itk::ScaledSingleValuedNonLinearOptimizer.
Reimplemented in elastix::PreconditionedGradientDescent< TElastix >, itk::AdaptiveStochasticPreconditionedGradientDescentOptimizer, and itk::StochasticPreconditionedGradientDescentOptimizer.
|
virtual |
Get estimated condition number; only valid after calling SetPreconditionMatrix
|
virtual |
Get the current iteration number.
|
virtual |
|
virtual |
Get current gradient.
|
virtual |
Get largestEigenValue; only valid after calling SetPreconditionMatrix
|
virtual |
Get the learning rate.
|
virtual |
|
virtual |
Get the number of iterations.
|
virtual |
Get current search direction
|
virtual |
Get sparsity of selfhessian; only valid after calling SetPreconditionMatrix; Takes into account that only upper half of the matrix is stored. 1 = dense, 0 = all elements zero.
|
virtual |
Get Stop condition.
|
virtual |
Get the current value.
itk::PreconditionedGradientDescentOptimizer::ITK_DISALLOW_COPY_AND_MOVE | ( | PreconditionedGradientDescentOptimizer | ) |
|
virtual |
Stop optimization and pass on exception.
|
static |
Method for creation through the object factory.
|
protected |
|
virtual |
Resume previously stopped optimization with current parameters
Reimplemented in elastix::PreconditionedGradientDescent< TElastix >.
|
virtual |
P = P + diagonalWeight * max(eigenvalue) * Identity
|
virtual |
Set the learning rate.
|
virtual |
Threshold for elements of cost function derivative; default 1e-10
|
virtual |
Set the number of iterations.
|
virtual |
Set the preconditioning matrix, whose inverse actually will be used to precondition. On setting the precondition matrix, an eigensystem is computed immediately, the eigenvalues/vectors are modified and only the modified eigenvectors/values are stored (in the EigenSystem). NB: this function destroys the input matrix, to save memory.
|
virtual |
Start optimization.
Reimplemented in elastix::PreconditionedGradientDescent< TElastix >, and itk::StochasticPreconditionedGradientDescentOptimizer.
|
virtual |
Stop optimization.
|
protected |
Definition at line 213 of file itkPreconditionedGradientDescentOptimizer.h.
|
protected |
Definition at line 214 of file itkPreconditionedGradientDescentOptimizer.h.
|
protected |
Definition at line 215 of file itkPreconditionedGradientDescentOptimizer.h.
|
protected |
Definition at line 210 of file itkPreconditionedGradientDescentOptimizer.h.
|
private |
Definition at line 229 of file itkPreconditionedGradientDescentOptimizer.h.
|
private |
Definition at line 231 of file itkPreconditionedGradientDescentOptimizer.h.
|
protected |
Definition at line 205 of file itkPreconditionedGradientDescentOptimizer.h.
|
protected |
Definition at line 209 of file itkPreconditionedGradientDescentOptimizer.h.
|
protected |
Definition at line 206 of file itkPreconditionedGradientDescentOptimizer.h.
|
private |
Definition at line 232 of file itkPreconditionedGradientDescentOptimizer.h.
|
private |
Definition at line 228 of file itkPreconditionedGradientDescentOptimizer.h.
|
protected |
Definition at line 208 of file itkPreconditionedGradientDescentOptimizer.h.
|
protected |
Definition at line 211 of file itkPreconditionedGradientDescentOptimizer.h.
|
private |
Definition at line 225 of file itkPreconditionedGradientDescentOptimizer.h.
|
protected |
Definition at line 207 of file itkPreconditionedGradientDescentOptimizer.h.
|
private |
Definition at line 226 of file itkPreconditionedGradientDescentOptimizer.h.
Generated on 2023-01-13
for elastix by ![]() |
![]() |