go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes
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:
Inheritance graph
[legend]

Public Types

using ConstPointer = SmartPointer< const Self >
 
using Pointer = SmartPointer< Self >
 
using ScaledCostFunctionPointer = ScaledCostFunctionType::Pointer
 
using ScaledCostFunctionType = ScaledSingleValuedCostFunction
 
using ScalesType = NonLinearOptimizer::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)
 
virtual void SetUseOpenMP (bool _arg)
 
void StartOptimization () override
 
virtual void StopOptimization ()
 
- Public Member Functions inherited from itk::ScaledSingleValuedNonLinearOptimizer
virtual const char * GetClassName () const
 
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 }
 
bool m_UseOpenMP
 
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

Definition at line 87 of file itkScaledSingleValuedNonLinearOptimizer.h.

◆ ScaledCostFunctionType

Definition at line 86 of file itkScaledSingleValuedNonLinearOptimizer.h.

◆ ScalesType

using itk::ScaledSingleValuedNonLinearOptimizer::ScalesType = NonLinearOptimizer::ScalesType

Definition at line 85 of file itkScaledSingleValuedNonLinearOptimizer.h.

◆ Self

Standard class typedefs.

Definition at line 60 of file itkGradientDescentOptimizer2.h.

◆ Superclass

Definition at line 61 of file itkGradientDescentOptimizer2.h.

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()

virtual const char * itk::GradientDescentOptimizer2::GetClassName ( ) const
virtual

◆ 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.

◆ SetUseOpenMP()

virtual void itk::GradientDescentOptimizer2::SetUseOpenMP ( bool  _arg)
virtual

Set use OpenMP or not.

◆ 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 158 of file itkGradientDescentOptimizer2.h.

◆ m_Gradient

DerivativeType itk::GradientDescentOptimizer2::m_Gradient
protected

Definition at line 149 of file itkGradientDescentOptimizer2.h.

◆ m_LearningRate

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

Definition at line 155 of file itkGradientDescentOptimizer2.h.

◆ m_NumberOfIterations

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

Definition at line 157 of file itkGradientDescentOptimizer2.h.

◆ m_SearchDirection

DerivativeType itk::GradientDescentOptimizer2::m_SearchDirection
protected

Definition at line 150 of file itkGradientDescentOptimizer2.h.

◆ m_Stop

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

Definition at line 156 of file itkGradientDescentOptimizer2.h.

◆ m_StopCondition

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

Definition at line 151 of file itkGradientDescentOptimizer2.h.

◆ m_UseOpenMP

bool itk::GradientDescentOptimizer2::m_UseOpenMP
private

Definition at line 160 of file itkGradientDescentOptimizer2.h.

◆ m_Value

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

Definition at line 154 of file itkGradientDescentOptimizer2.h.



Generated on 2023-01-13 for elastix by doxygen 1.9.6 elastix logo