go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itk::GradientDescentOptimizer2 Class Reference

#include <itkGradientDescentOptimizer2.h>

Detailed Description

Implement a gradient descent optimizer.

GradientDescentOptimizer2 implements a simple gradient descent optimizer. At each iteration the current position is updated according to

\[
       p_{n+1} = p_n
               + \mbox{learningRate}
               \, \frac{\partial f(p_n) }{\partial p_n}
\]

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 $\partial f / \partial p$ but setting a scaling vector using method SetScale().

The difference of this class with the itk::GradientDescentOptimizer is that it's based on the ScaledSingleValuedNonLinearOptimizer

See also
ScaledSingleValuedNonLinearOptimizer

Definition at line 54 of file itkGradientDescentOptimizer2.h.

Inheritance diagram for itk::GradientDescentOptimizer2:

Public Types

using ConstPointer = SmartPointer<const Self>
 
using Pointer = SmartPointer<Self>
 
using ScaledCostFunctionPointer
 
using ScaledCostFunctionType
 
using ScalesType
 
using Self = GradientDescentOptimizer2
 
enum  StopConditionType { MaximumNumberOfIterations , MetricError , MinimumStepSize }
 
using Superclass = ScaledSingleValuedNonLinearOptimizer
 
- Public Types inherited from itk::ScaledSingleValuedNonLinearOptimizer
using ConstPointer = SmartPointer<const Self>
 
using Pointer = SmartPointer<Self>
 
using ScaledCostFunctionPointer = ScaledCostFunctionType::Pointer
 
using ScaledCostFunctionType = ScaledSingleValuedCostFunction
 
using ScalesType = NonLinearOptimizer::ScalesType
 
using Self = ScaledSingleValuedNonLinearOptimizer
 
using Superclass = SingleValuedNonLinearOptimizer
 

Public Member Functions

virtual void AdvanceOneStep ()
 
virtual const char * GetClassName () const
 
virtual unsigned int GetCurrentIteration () const
 
virtual const DerivativeType & GetGradient ()
 
virtual const doubleGetLearningRate ()
 
virtual const unsigned long & GetNumberOfIterations ()
 
virtual const DerivativeType & GetSearchDirection ()
 
virtual const StopConditionTypeGetStopCondition ()
 
virtual const doubleGetValue ()
 
 ITK_DISALLOW_COPY_AND_MOVE (GradientDescentOptimizer2)
 
virtual void MetricErrorResponse (ExceptionObject &err)
 
virtual void ResumeOptimization ()
 
virtual void SetLearningRate (double _arg)
 
virtual void SetNumberOfIterations (unsigned long _arg)
 
void StartOptimization () override
 
virtual void StopOptimization ()
 
- Public Member Functions inherited from itk::ScaledSingleValuedNonLinearOptimizer
const ParametersType & GetCurrentPosition () const override
 
virtual bool GetMaximize () const
 
virtual const ScaledCostFunctionTypeGetScaledCostFunction ()
 
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 Public Member Functions inherited from itk::ScaledSingleValuedNonLinearOptimizer
static Pointer New ()
 

Protected Member Functions

 GradientDescentOptimizer2 ()
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
 ~GradientDescentOptimizer2 () override=default
 
- Protected Member Functions inherited from itk::ScaledSingleValuedNonLinearOptimizer
virtual void GetScaledDerivative (const ParametersType &parameters, DerivativeType &derivative) const
 
virtual MeasureType GetScaledValue (const ParametersType &parameters) const
 
virtual void GetScaledValueAndDerivative (const ParametersType &parameters, MeasureType &value, DerivativeType &derivative) const
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
 ScaledSingleValuedNonLinearOptimizer ()
 
void SetCurrentPosition (const ParametersType &param) override
 
virtual void SetScaledCurrentPosition (const ParametersType &parameters)
 
 ~ScaledSingleValuedNonLinearOptimizer () override=default
 

Protected Attributes

DerivativeType m_Gradient {}
 
DerivativeType m_SearchDirection {}
 
StopConditionType m_StopCondition { MaximumNumberOfIterations }
 
- Protected Attributes inherited from itk::ScaledSingleValuedNonLinearOptimizer
ScaledCostFunctionPointer m_ScaledCostFunction {}
 
ParametersType m_ScaledCurrentPosition {}
 

Private Attributes

unsigned long m_CurrentIteration { 0 }
 
double m_LearningRate { 1.0 }
 
unsigned long m_NumberOfIterations { 100 }
 
bool m_Stop { false }
 
double m_Value { 0.0 }
 

Member Typedef Documentation

◆ ConstPointer

Definition at line 63 of file itkGradientDescentOptimizer2.h.

◆ Pointer

Definition at line 62 of file itkGradientDescentOptimizer2.h.

◆ ScaledCostFunctionPointer

◆ ScaledCostFunctionType

◆ ScalesType

◆ Self

Standard class typedefs.

Definition at line 60 of file itkGradientDescentOptimizer2.h.

◆ Superclass

Member Enumeration Documentation

◆ StopConditionType

Codes of stopping conditions The MinimumStepSize stopcondition never occurs, but may be implemented in inheriting classes

Enumerator
MaximumNumberOfIterations 
MetricError 
MinimumStepSize 

Definition at line 83 of file itkGradientDescentOptimizer2.h.

Constructor & Destructor Documentation

◆ GradientDescentOptimizer2()

itk::GradientDescentOptimizer2::GradientDescentOptimizer2 ( )
protected

◆ ~GradientDescentOptimizer2()

itk::GradientDescentOptimizer2::~GradientDescentOptimizer2 ( )
overrideprotecteddefault

Member Function Documentation

◆ AdvanceOneStep()

virtual void itk::GradientDescentOptimizer2::AdvanceOneStep ( )
virtual

◆ GetClassName()

◆ GetCurrentIteration()

virtual unsigned int itk::GradientDescentOptimizer2::GetCurrentIteration ( ) const
virtual

Get the current iteration number.

◆ GetGradient()

virtual const DerivativeType & itk::GradientDescentOptimizer2::GetGradient ( )
virtual

Get current gradient.

◆ GetLearningRate()

virtual const double & itk::GradientDescentOptimizer2::GetLearningRate ( )
virtual

Get the learning rate.

◆ GetNumberOfIterations()

virtual const unsigned long & itk::GradientDescentOptimizer2::GetNumberOfIterations ( )
virtual

Get the number of iterations.

◆ GetSearchDirection()

virtual const DerivativeType & itk::GradientDescentOptimizer2::GetSearchDirection ( )
virtual

Get current search direction

◆ GetStopCondition()

virtual const StopConditionType & itk::GradientDescentOptimizer2::GetStopCondition ( )
virtual

Get Stop condition.

◆ GetValue()

virtual const double & itk::GradientDescentOptimizer2::GetValue ( )
virtual

Get the current value.

◆ ITK_DISALLOW_COPY_AND_MOVE()

itk::GradientDescentOptimizer2::ITK_DISALLOW_COPY_AND_MOVE ( GradientDescentOptimizer2 )

◆ MetricErrorResponse()

virtual void itk::GradientDescentOptimizer2::MetricErrorResponse ( ExceptionObject & err)
virtual

Stop optimization and pass on exception.

◆ New()

static Pointer itk::GradientDescentOptimizer2::New ( )
static

Method for creation through the object factory.

◆ PrintSelf()

void itk::GradientDescentOptimizer2::PrintSelf ( std::ostream & os,
Indent indent ) const
overrideprotected

◆ ResumeOptimization()

virtual void itk::GradientDescentOptimizer2::ResumeOptimization ( )
virtual

◆ SetLearningRate()

virtual void itk::GradientDescentOptimizer2::SetLearningRate ( double _arg)
virtual

Set the learning rate.

◆ SetNumberOfIterations()

virtual void itk::GradientDescentOptimizer2::SetNumberOfIterations ( unsigned long _arg)
virtual

Set the number of iterations.

◆ StartOptimization()

void itk::GradientDescentOptimizer2::StartOptimization ( )
override

Start optimization.

◆ StopOptimization()

virtual void itk::GradientDescentOptimizer2::StopOptimization ( )
virtual

Stop optimization.

See also
ResumeOptimization

Field Documentation

◆ m_CurrentIteration

unsigned long itk::GradientDescentOptimizer2::m_CurrentIteration { 0 }
private

Definition at line 155 of file itkGradientDescentOptimizer2.h.

◆ m_Gradient

DerivativeType itk::GradientDescentOptimizer2::m_Gradient {}
protected

Definition at line 146 of file itkGradientDescentOptimizer2.h.

◆ m_LearningRate

double itk::GradientDescentOptimizer2::m_LearningRate { 1.0 }
private

Definition at line 152 of file itkGradientDescentOptimizer2.h.

◆ m_NumberOfIterations

unsigned long itk::GradientDescentOptimizer2::m_NumberOfIterations { 100 }
private

Definition at line 154 of file itkGradientDescentOptimizer2.h.

◆ m_SearchDirection

DerivativeType itk::GradientDescentOptimizer2::m_SearchDirection {}
protected

Definition at line 147 of file itkGradientDescentOptimizer2.h.

◆ m_Stop

bool itk::GradientDescentOptimizer2::m_Stop { false }
private

Definition at line 153 of file itkGradientDescentOptimizer2.h.

◆ m_StopCondition

StopConditionType itk::GradientDescentOptimizer2::m_StopCondition { MaximumNumberOfIterations }
protected

Definition at line 148 of file itkGradientDescentOptimizer2.h.

◆ m_Value

double itk::GradientDescentOptimizer2::m_Value { 0.0 }
private

Definition at line 151 of file itkGradientDescentOptimizer2.h.



Generated on 2024-07-17 for elastix by doxygen 1.11.0 (9b424b03c9833626cd435af22a444888fbbb192d) elastix logo