ITK  6.0.0
Insight Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
itk::MultiGradientOptimizerv4Template< TInternalComputationValueType > Class Template Reference

#include <itkMultiGradientOptimizerv4.h>

Detailed Description

template<typename TInternalComputationValueType>
class itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >

Multiple gradient-based optimizers are combined in order to perform a multi-objective optimization.

This optimizer will do a combined gradient descent optimization using whatever metric/optimizer gradient sub-optimizers are passed to it by the user. The learning rate or scale estimator for each sub-optimizer controls the relative weight of each metric in the optimization. Denote the weights as \( w_1 \) and \( w_2 \) then the MultiGradientOptimizer will optimize \( \sum_i w_i Metric_i \) by using update rule:

\[ params_{new} = params_{old} + \frac{1}{N_{Metrics}} * ( \sum_i w_i Grad(Metric_i) ) \]

Note
The scales, learning rates and weights options must be set individually for each sub-optimizer, and have no effect when set on this class.

The test for this class illustrates the expected behavior.

Definition at line 47 of file itkMultiGradientOptimizerv4.h.

+ Inheritance diagram for itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >:
+ Collaboration diagram for itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >:

Public Types

using ConstPointer = SmartPointer< const Self >
 
using DerivativeType = typename MetricType::DerivativeType
 
using InternalComputationValueType = TInternalComputationValueType
 
using LocalOptimizerPointer = typename itk::GradientDescentOptimizerv4Template< TInternalComputationValueType >::Pointer
 
using LocalOptimizerType = itk::GradientDescentOptimizerv4Template< TInternalComputationValueType >
 
using MetricTypePointer = typename MetricType::Pointer
 
using MetricValuesListType = std::vector< MeasureType >
 
using OptimizerPointer = typename OptimizerType::Pointer
 
using OptimizersListSizeType = typename OptimizersListType::size_type
 
using OptimizersListType = std::vector< LocalOptimizerPointer >
 
using OptimizerType = ObjectToObjectOptimizerBaseTemplate< TInternalComputationValueType >
 
using Pointer = SmartPointer< Self >
 
using Self = MultiGradientOptimizerv4Template
 
using Superclass = GradientDescentOptimizerv4Template< TInternalComputationValueType >
 
- Public Types inherited from itk::GradientDescentOptimizerv4Template< TInternalComputationValueType >
using ConstPointer = SmartPointer< const Self >
 
using InternalComputationValueType = TInternalComputationValueType
 
using Pointer = SmartPointer< Self >
 
using Self = GradientDescentOptimizerv4Template
 
using Superclass = GradientDescentOptimizerBasev4Template< TInternalComputationValueType >
 
- Public Types inherited from itk::GradientDescentOptimizerBasev4Template< TInternalComputationValueType >
using ConstPointer = SmartPointer< const Self >
 
using ConvergenceMonitoringType = itk::Function::WindowConvergenceMonitoringFunction< TInternalComputationValueType >
 
using IndexRangeType = ThreadedIndexedContainerPartitioner::IndexRangeType
 
using InternalComputationValueType = TInternalComputationValueType
 
using MetricTypePointer = typename MetricType::Pointer
 
using Pointer = SmartPointer< Self >
 
using Self = GradientDescentOptimizerBasev4Template
 
using Superclass = ObjectToObjectOptimizerBaseTemplate< TInternalComputationValueType >
 
- Public Types inherited from itk::ObjectToObjectOptimizerBaseTemplate< TInternalComputationValueType >
using ConstPointer = SmartPointer< const Self >
 
using DerivativeType = typename MetricType::DerivativeType
 
using MeasureType = typename MetricType::MeasureType
 
using MetricType = ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >
 
using MetricTypePointer = typename MetricType::Pointer
 
using NumberOfParametersType = typename MetricType::NumberOfParametersType
 
using ParametersType = OptimizerParameters< TInternalComputationValueType >
 
using Pointer = SmartPointer< Self >
 
using ScalesEstimatorType = OptimizerParameterScalesEstimatorTemplate< TInternalComputationValueType >
 
using ScalesType = OptimizerParameters< TInternalComputationValueType >
 
using Self = ObjectToObjectOptimizerBaseTemplate
 
using StopConditionDescriptionType = std::ostringstream
 
using StopConditionReturnStringType = std::string
 
using Superclass = Object
 
- Public Types inherited from itk::Object
using ConstPointer = SmartPointer< const Self >
 
using Pointer = SmartPointer< Self >
 
using Self = Object
 
using Superclass = LightObject
 
- Public Types inherited from itk::LightObject
using ConstPointer = SmartPointer< const Self >
 
using Pointer = SmartPointer< Self >
 
using Self = LightObject
 

Public Member Functions

const MetricValuesListTypeGetMetricValuesList () const
 
const char * GetNameOfClass () const override
 
OptimizersListTypeGetOptimizersList ()
 
const StopConditionObjectToObjectOptimizerEnumGetStopCondition () const override
 
StopConditionReturnStringType GetStopConditionDescription () const override
 
void ResumeOptimization () override
 
void SetOptimizersList (OptimizersListType &p)
 
void StartOptimization (bool doOnlyInitialization=false) override
 
void StopOptimization () override
 
- Public Member Functions inherited from itk::GradientDescentOptimizerv4Template< TInternalComputationValueType >
virtual void EstimateLearningRate ()
 
virtual const TInternalComputationValueType & GetConvergenceValue () const
 
virtual void SetConvergenceWindowSize (SizeValueType _arg)
 
virtual void SetMinimumConvergenceValue (TInternalComputationValueType _arg)
 
virtual void SetLearningRate (TInternalComputationValueType _arg)
 
virtual const TInternalComputationValueType & GetLearningRate () const
 
virtual void SetMaximumStepSizeInPhysicalUnits (TInternalComputationValueType _arg)
 
virtual const TInternalComputationValueType & GetMaximumStepSizeInPhysicalUnits () const
 
virtual void SetDoEstimateLearningRateAtEachIteration (bool _arg)
 
virtual const bool & GetDoEstimateLearningRateAtEachIteration () const
 
virtual void DoEstimateLearningRateAtEachIterationOn ()
 
virtual void SetDoEstimateLearningRateOnce (bool _arg)
 
virtual const bool & GetDoEstimateLearningRateOnce () const
 
virtual void DoEstimateLearningRateOnceOn ()
 
virtual void SetReturnBestParametersAndValue (bool _arg)
 
virtual const bool & GetReturnBestParametersAndValue () const
 
virtual void ReturnBestParametersAndValueOn ()
 
- Public Member Functions inherited from itk::GradientDescentOptimizerBasev4Template< TInternalComputationValueType >
virtual const DerivativeTypeGetGradient () const
 
virtual void ModifyGradientByScales ()
 
virtual void ModifyGradientByLearningRate ()
 
- Public Member Functions inherited from itk::ObjectToObjectOptimizerBaseTemplate< TInternalComputationValueType >
virtual bool CanUseScales () const
 
virtual SizeValueType GetCurrentIteration () const
 
virtual const MeasureTypeGetCurrentMetricValue () const
 
virtual const ParametersTypeGetCurrentPosition () const
 
const char * GetNameOfClass () const override
 
virtual SizeValueType GetNumberOfIterations () const
 
virtual const ThreadIdTypeGetNumberOfWorkUnits () const
 
virtual const ScalesTypeGetScales () const
 
virtual const bool & GetScalesAreIdentity () const
 
bool GetScalesInitialized () const
 
virtual const MeasureTypeGetValue () const
 
virtual const ScalesTypeGetWeights () const
 
virtual const bool & GetWeightsAreIdentity () const
 
virtual void SetNumberOfIterations (SizeValueType _arg)
 
virtual void SetNumberOfWorkUnits (ThreadIdType number)
 
virtual void SetScalesEstimator (ScalesEstimatorType *_arg)
 
virtual void SetWeights (ScalesType _arg)
 
virtual void SetMetric (MetricType *_arg)
 
virtual MetricTypeGetModifiableMetric ()
 
virtual void SetScales (const ScalesType &scales)
 
virtual void SetDoEstimateScales (bool _arg)
 
virtual const bool & GetDoEstimateScales () const
 
virtual void DoEstimateScalesOn ()
 
- Public Member Functions inherited from itk::Object
unsigned long AddObserver (const EventObject &event, Command *cmd) const
 
unsigned long AddObserver (const EventObject &event, std::function< void(const EventObject &)> function) const
 
LightObject::Pointer CreateAnother () const override
 
virtual void DebugOff () const
 
virtual void DebugOn () const
 
CommandGetCommand (unsigned long tag)
 
bool GetDebug () const
 
MetaDataDictionaryGetMetaDataDictionary ()
 
const MetaDataDictionaryGetMetaDataDictionary () const
 
virtual ModifiedTimeType GetMTime () const
 
virtual const TimeStampGetTimeStamp () const
 
bool HasObserver (const EventObject &event) const
 
void InvokeEvent (const EventObject &)
 
void InvokeEvent (const EventObject &) const
 
virtual void Modified () const
 
void Register () const override
 
void RemoveAllObservers ()
 
void RemoveObserver (unsigned long tag) const
 
void SetDebug (bool debugFlag) const
 
void SetReferenceCount (int) override
 
void UnRegister () const noexcept override
 
void SetMetaDataDictionary (const MetaDataDictionary &rhs)
 
void SetMetaDataDictionary (MetaDataDictionary &&rrhs)
 
virtual void SetObjectName (std::string _arg)
 
virtual const std::string & GetObjectName () const
 
- Public Member Functions inherited from itk::LightObject
Pointer Clone () const
 
virtual void Delete ()
 
virtual int GetReferenceCount () const
 
void Print (std::ostream &os, Indent indent=0) const
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from itk::GradientDescentOptimizerv4Template< TInternalComputationValueType >
static Pointer New ()
 
- Static Public Member Functions inherited from itk::Object
static bool GetGlobalWarningDisplay ()
 
static void GlobalWarningDisplayOff ()
 
static void GlobalWarningDisplayOn ()
 
static Pointer New ()
 
static void SetGlobalWarningDisplay (bool val)
 
- Static Public Member Functions inherited from itk::LightObject
static void BreakOnError ()
 
static Pointer New ()
 

Protected Member Functions

void PrintSelf (std::ostream &os, Indent indent) const override
 
 MultiGradientOptimizerv4Template ()
 
 ~MultiGradientOptimizerv4Template () override=default
 
- Protected Member Functions inherited from itk::GradientDescentOptimizerv4Template< TInternalComputationValueType >
virtual void AdvanceOneStep ()
 
 GradientDescentOptimizerv4Template ()
 
void ModifyGradientByLearningRateOverSubRange (const IndexRangeType &subrange) override
 
void ModifyGradientByScalesOverSubRange (const IndexRangeType &subrange) override
 
 ~GradientDescentOptimizerv4Template () override=default
 
- Protected Member Functions inherited from itk::GradientDescentOptimizerBasev4Template< TInternalComputationValueType >
 GradientDescentOptimizerBasev4Template ()
 
 ~GradientDescentOptimizerBasev4Template () override=default
 
- Protected Member Functions inherited from itk::ObjectToObjectOptimizerBaseTemplate< TInternalComputationValueType >
void PrintSelf (std::ostream &os, Indent indent) const override
 
 ObjectToObjectOptimizerBaseTemplate ()
 
 ~ObjectToObjectOptimizerBaseTemplate () override
 
- Protected Member Functions inherited from itk::Object
 Object ()
 
bool PrintObservers (std::ostream &os, Indent indent) const
 
virtual void SetTimeStamp (const TimeStamp &timeStamp)
 
 ~Object () override
 
- Protected Member Functions inherited from itk::LightObject
virtual LightObject::Pointer InternalClone () const
 
 LightObject ()
 
virtual void PrintHeader (std::ostream &os, Indent indent) const
 
virtual void PrintTrailer (std::ostream &os, Indent indent) const
 
virtual ~LightObject ()
 

Protected Attributes

MeasureType m_MaximumMetricValue {}
 
MetricValuesListType m_MetricValuesList {}
 
MeasureType m_MinimumMetricValue {}
 
OptimizersListType m_OptimizersList {}
 
bool m_Stop { false }
 
StopConditionObjectToObjectOptimizerEnum m_StopCondition {}
 
StopConditionDescriptionType m_StopConditionDescription {}
 
- Protected Attributes inherited from itk::GradientDescentOptimizerv4Template< TInternalComputationValueType >
ParametersType m_BestParameters {}
 
TInternalComputationValueType m_ConvergenceValue {}
 
MeasureType m_CurrentBestValue {}
 
TInternalComputationValueType m_LearningRate {}
 
TInternalComputationValueType m_MinimumConvergenceValue {}
 
DerivativeType m_PreviousGradient {}
 
bool m_ReturnBestParametersAndValue { false }
 
- Protected Attributes inherited from itk::GradientDescentOptimizerBasev4Template< TInternalComputationValueType >
ConvergenceMonitoringType::Pointer m_ConvergenceMonitoring {}
 
SizeValueType m_ConvergenceWindowSize {}
 
bool m_DoEstimateLearningRateAtEachIteration {}
 
bool m_DoEstimateLearningRateOnce {}
 
DerivativeType m_Gradient {}
 
TInternalComputationValueType m_MaximumStepSizeInPhysicalUnits {}
 
DomainThreader< ThreadedIndexedContainerPartitioner, Self >::Pointer m_ModifyGradientByLearningRateThreader {}
 
DomainThreader< ThreadedIndexedContainerPartitioner, Self >::Pointer m_ModifyGradientByScalesThreader {}
 
bool m_Stop { false }
 
StopConditionObjectToObjectOptimizerEnum m_StopCondition {}
 
StopConditionDescriptionType m_StopConditionDescription {}
 
bool m_UseConvergenceMonitoring {}
 
- Protected Attributes inherited from itk::ObjectToObjectOptimizerBaseTemplate< TInternalComputationValueType >
SizeValueType m_CurrentIteration {}
 
MeasureType m_CurrentMetricValue {}
 
bool m_DoEstimateScales {}
 
MetricTypePointer m_Metric {}
 
SizeValueType m_NumberOfIterations {}
 
ThreadIdType m_NumberOfWorkUnits {}
 
ScalesType m_Scales {}
 
bool m_ScalesAreIdentity {}
 
ScalesEstimatorType::Pointer m_ScalesEstimator {}
 
ScalesType m_Weights {}
 
bool m_WeightsAreIdentity {}
 
- Protected Attributes inherited from itk::LightObject
std::atomic< int > m_ReferenceCount {}
 

Member Typedef Documentation

◆ ConstPointer

template<typename TInternalComputationValueType >
using itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::ConstPointer = SmartPointer<const Self>

Definition at line 57 of file itkMultiGradientOptimizerv4.h.

◆ DerivativeType

template<typename TInternalComputationValueType >
using itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::DerivativeType = typename MetricType::DerivativeType

Derivative type

Definition at line 88 of file itkMultiGradientOptimizerv4.h.

◆ InternalComputationValueType

template<typename TInternalComputationValueType >
using itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::InternalComputationValueType = TInternalComputationValueType

It should be possible to derive the internal computation type from the class object.

Definition at line 81 of file itkMultiGradientOptimizerv4.h.

◆ LocalOptimizerPointer

template<typename TInternalComputationValueType >
using itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::LocalOptimizerPointer = typename itk::GradientDescentOptimizerv4Template<TInternalComputationValueType>::Pointer

Definition at line 67 of file itkMultiGradientOptimizerv4.h.

◆ LocalOptimizerType

template<typename TInternalComputationValueType >
using itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::LocalOptimizerType = itk::GradientDescentOptimizerv4Template<TInternalComputationValueType>

Definition at line 65 of file itkMultiGradientOptimizerv4.h.

◆ MetricTypePointer

template<typename TInternalComputationValueType >
using itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::MetricTypePointer = typename MetricType::Pointer

Definition at line 85 of file itkMultiGradientOptimizerv4.h.

◆ MetricValuesListType

template<typename TInternalComputationValueType >
using itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::MetricValuesListType = std::vector<MeasureType>

Definition at line 92 of file itkMultiGradientOptimizerv4.h.

◆ OptimizerPointer

template<typename TInternalComputationValueType >
using itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::OptimizerPointer = typename OptimizerType::Pointer

Definition at line 70 of file itkMultiGradientOptimizerv4.h.

◆ OptimizersListSizeType

template<typename TInternalComputationValueType >
using itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::OptimizersListSizeType = typename OptimizersListType::size_type

Definition at line 72 of file itkMultiGradientOptimizerv4.h.

◆ OptimizersListType

template<typename TInternalComputationValueType >
using itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::OptimizersListType = std::vector<LocalOptimizerPointer>

Definition at line 71 of file itkMultiGradientOptimizerv4.h.

◆ OptimizerType

template<typename TInternalComputationValueType >
using itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::OptimizerType = ObjectToObjectOptimizerBaseTemplate<TInternalComputationValueType>

Definition at line 69 of file itkMultiGradientOptimizerv4.h.

◆ Pointer

template<typename TInternalComputationValueType >
using itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::Pointer = SmartPointer<Self>

Definition at line 56 of file itkMultiGradientOptimizerv4.h.

◆ Self

template<typename TInternalComputationValueType >
using itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::Self = MultiGradientOptimizerv4Template

Standard class type aliases.

Definition at line 54 of file itkMultiGradientOptimizerv4.h.

◆ Superclass

template<typename TInternalComputationValueType >
using itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::Superclass = GradientDescentOptimizerv4Template<TInternalComputationValueType>

Definition at line 55 of file itkMultiGradientOptimizerv4.h.

Constructor & Destructor Documentation

◆ MultiGradientOptimizerv4Template()

template<typename TInternalComputationValueType >
itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::MultiGradientOptimizerv4Template ( )
protected

Default constructor

◆ ~MultiGradientOptimizerv4Template()

template<typename TInternalComputationValueType >
itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::~MultiGradientOptimizerv4Template ( )
overrideprotecteddefault

Default constructor

Member Function Documentation

◆ GetMetricValuesList()

template<typename TInternalComputationValueType >
const MetricValuesListType& itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::GetMetricValuesList ( ) const

Get the list of metric values that we produced after the multi-objective search.

◆ GetNameOfClass()

template<typename TInternalComputationValueType >
const char* itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::GetNameOfClass ( ) const
overridevirtual

◆ GetOptimizersList()

template<typename TInternalComputationValueType >
OptimizersListType& itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::GetOptimizersList ( )

Get the list of optimizers currently held.

◆ GetStopCondition()

template<typename TInternalComputationValueType >
const StopConditionObjectToObjectOptimizerEnum& itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::GetStopCondition ( ) const
inlineoverridevirtual

Get stop condition enum

Reimplemented from itk::GradientDescentOptimizerBasev4Template< TInternalComputationValueType >.

Definition at line 96 of file itkMultiGradientOptimizerv4.h.

◆ GetStopConditionDescription()

template<typename TInternalComputationValueType >
StopConditionReturnStringType itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::GetStopConditionDescription ( ) const
overridevirtual

Get the reason for termination

Reimplemented from itk::GradientDescentOptimizerBasev4Template< TInternalComputationValueType >.

◆ New()

template<typename TInternalComputationValueType >
static Pointer itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::New ( )
static

Method for creation through the object factory.

◆ PrintSelf()

template<typename TInternalComputationValueType >
void itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
overrideprotectedvirtual

Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from itk::GradientDescentOptimizerv4Template< TInternalComputationValueType >.

◆ ResumeOptimization()

template<typename TInternalComputationValueType >
void itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::ResumeOptimization ( )
overridevirtual

Resume the optimization. Can be called after StopOptimization to resume. The bulk of the optimization work loop is here.

Reimplemented from itk::GradientDescentOptimizerv4Template< TInternalComputationValueType >.

◆ SetOptimizersList()

template<typename TInternalComputationValueType >
void itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::SetOptimizersList ( OptimizersListType p)

Set the list of optimizers to combine.

◆ StartOptimization()

template<typename TInternalComputationValueType >
void itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::StartOptimization ( bool  doOnlyInitialization = false)
overridevirtual

◆ StopOptimization()

template<typename TInternalComputationValueType >
void itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::StopOptimization ( )
overridevirtual

Stop optimization. The object is left in a state so the optimization can be resumed by calling ResumeOptimization.

Reimplemented from itk::GradientDescentOptimizerv4Template< TInternalComputationValueType >.

Member Data Documentation

◆ m_MaximumMetricValue

template<typename TInternalComputationValueType >
MeasureType itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::m_MaximumMetricValue {}
protected

Definition at line 147 of file itkMultiGradientOptimizerv4.h.

◆ m_MetricValuesList

template<typename TInternalComputationValueType >
MetricValuesListType itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::m_MetricValuesList {}
protected

Definition at line 145 of file itkMultiGradientOptimizerv4.h.

◆ m_MinimumMetricValue

template<typename TInternalComputationValueType >
MeasureType itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::m_MinimumMetricValue {}
protected

Definition at line 146 of file itkMultiGradientOptimizerv4.h.

◆ m_OptimizersList

template<typename TInternalComputationValueType >
OptimizersListType itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::m_OptimizersList {}
protected

Definition at line 144 of file itkMultiGradientOptimizerv4.h.

◆ m_Stop

template<typename TInternalComputationValueType >
bool itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::m_Stop { false }
protected

Definition at line 141 of file itkMultiGradientOptimizerv4.h.

◆ m_StopCondition

template<typename TInternalComputationValueType >
StopConditionObjectToObjectOptimizerEnum itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::m_StopCondition {}
protected

Definition at line 142 of file itkMultiGradientOptimizerv4.h.

◆ m_StopConditionDescription

template<typename TInternalComputationValueType >
StopConditionDescriptionType itk::MultiGradientOptimizerv4Template< TInternalComputationValueType >::m_StopConditionDescription {}
protected

Definition at line 143 of file itkMultiGradientOptimizerv4.h.


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