#include <elxQuasiNewtonLBFGS.h>
An optimizer based on the itk::QuasiNewtonLBFGSOptimizer.
The QuasiNewtonLBFGS class is a wrap around the QuasiNewtonLBFGSOptimizer. It uses the itk::MoreThuenteLineSearchOptimizer. Please read the documentation of these classes to find out more about it.
This optimizer supports the NewSamplesEveryIteration option. It requests new samples for the computation of each search direction (not during the line search). Actually this makes no sense for a QuasiNewton optimizer. So, think twice before using the NewSamplesEveryIteration option.
The parameters used in this class are:
Optimizer: Select this optimizer as follows:
(Optimizer "QuasiNewtonLBFGS")
GenerateLineSearchIterations: Whether line search iteration should be counted as elastix-iterations.
example: (GenerateLineSearchIterations "true")
Can only be specified for all resolutions at once.
Default value: "false".
MaximumNumberOfIterations: The maximum number of iterations in each resolution.
example: (MaximumNumberOfIterations 100 100 50)
Default value: 100.
MaximumNumberOfLineSearchIterations: The maximum number of line search iterations in each resolution.
example: (MaximumNumberOfLineSearchIterations 10 10 5)
Default value: 20.
StepLength: Set the length of the initial step tried by the itk::MoreThuenteLineSearchOptimizer.
example: (StepLength 2.0 1.0 0.5)
Default value: 1.0.
LineSearchValueTolerance: Determine the Wolfe conditions that the itk::MoreThuenteLineSearchOptimizer tries to satisfy.
example: (LineSearchValueTolerance 0.0001 0.0001 0.0001)
Default value: 0.0001.
LineSearchGradientTolerance: Determine the Wolfe conditions that the itk::MoreThuenteLineSearchOptimizer tries to satisfy.
example: (LineSearchGradientTolerance 0.9 0.9 0.9)
Default value: 0.9.
GradientMagnitudeTolerance: Stopping criterion. See the documentation of the itk::QuasiNewtonLBFGSOptimizer for more information.
example: (GradientMagnitudeTolerance 0.001 0.0001 0.000001)
Default value: 0.000001.
LBFGSUpdateAccuracy: The "memory" of the optimizer. This determines how many past iterations are used to construct the Hessian approximation. The higher, the more memory is used, but the better the Hessian approximation. If set to zero, The QuasiNewtonLBFGS equals a gradient descent method with line search.
example: (LBFGSUpdateAccuracy 5 10 20)
Default value: 5.
StopIfWolfeNotSatisfied: Whether to stop the optimisation if in one iteration the Wolfe conditions can not be satisfied by the itk::MoreThuenteLineSearchOptimizer.
In general it is wise to do so.
example: (StopIfWolfeNotSatisfied "true" "false")
Default value: "true".
Definition at line 88 of file elxQuasiNewtonLBFGS.h.
Static Public Member Functions | |
static Pointer | New () |
Static Public Member Functions inherited from itk::QuasiNewtonLBFGSOptimizer | |
static Pointer | New () |
Static Public Member Functions inherited from itk::ScaledSingleValuedNonLinearOptimizer | |
static Pointer | New () |
Static Public Member Functions inherited from elastix::BaseComponent | |
template<typename TBaseComponent > | |
static auto | AsITKBaseType (TBaseComponent *const baseComponent) -> decltype(baseComponent->GetAsITKBaseType()) |
static void | InitializeElastixExecutable () |
static bool | IsElastixLibrary () |
Protected Member Functions | |
virtual std::string | DeterminePhase () const |
virtual std::string | GetLineSearchStopCondition () const |
void | LineSearch (const ParametersType searchDir, double &step, ParametersType &x, MeasureType &f, DerivativeType &g) override |
QuasiNewtonLBFGS () | |
bool | TestConvergence (bool firstLineSearchDone) override |
~QuasiNewtonLBFGS () override=default | |
Protected Member Functions inherited from itk::QuasiNewtonLBFGSOptimizer | |
virtual void | ComputeDiagonalMatrix (DiagonalMatrixType &diag_H0) |
virtual void | ComputeSearchDirection (const DerivativeType &gradient, ParametersType &searchDir) |
virtual void | LineSearch (const ParametersType searchDir, double &step, ParametersType &x, MeasureType &f, DerivativeType &g) |
void | PrintSelf (std::ostream &, Indent) const override |
QuasiNewtonLBFGSOptimizer () | |
virtual void | SetInLineSearch (bool _arg) |
virtual void | StoreCurrentPoint (const ParametersType &step, const DerivativeType &grad_dif) |
~QuasiNewtonLBFGSOptimizer () override=default | |
Protected Member Functions inherited from itk::ScaledSingleValuedNonLinearOptimizer | |
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 Member Functions inherited from elastix::OptimizerBase< TElastix > | |
virtual bool | GetNewSamplesEveryIteration () const |
OptimizerBase ()=default | |
virtual void | SelectNewSamples () |
~OptimizerBase () override=default | |
Protected Member Functions inherited from elastix::BaseComponentSE< TElastix > | |
BaseComponentSE ()=default | |
~BaseComponentSE () override=default | |
Protected Member Functions inherited from elastix::BaseComponent | |
BaseComponent ()=default | |
virtual | ~BaseComponent ()=default |
Protected Attributes | |
LineOptimizerPointer | m_LineOptimizer |
Protected Attributes inherited from itk::QuasiNewtonLBFGSOptimizer | |
unsigned int | m_Bound { 0 } |
DerivativeType | m_CurrentGradient {} |
unsigned long | m_CurrentIteration { 0 } |
double | m_CurrentStepLength { 0.0 } |
MeasureType | m_CurrentValue { 0.0 } |
bool | m_InLineSearch { false } |
unsigned int | m_Point { 0 } |
unsigned int | m_PreviousPoint { 0 } |
RhoType | m_Rho {} |
SType | m_S {} |
bool | m_Stop { false } |
StopConditionType | m_StopCondition { StopConditionType::Unknown } |
YType | m_Y {} |
Protected Attributes inherited from itk::ScaledSingleValuedNonLinearOptimizer | |
ScaledCostFunctionPointer | m_ScaledCostFunction {} |
ParametersType | m_ScaledCurrentPosition {} |
Protected Attributes inherited from elastix::BaseComponentSE< TElastix > | |
Configuration::ConstPointer | m_Configuration {} |
itk::WeakPointer< TElastix > | m_Elastix {} |
RegistrationType * | m_Registration {} |
Private Member Functions | |
void | InvokeIterationEvent (const itk::EventObject &event) |
Additional Inherited Members | |
Protected Types inherited from elastix::OptimizerBase< TElastix > | |
using | SettingsVectorType = typename std::vector<SettingsType> |
Static Protected Member Functions inherited from elastix::OptimizerBase< TElastix > | |
static void | PrintSettingsVector (const SettingsVectorType &settings) |
using elastix::QuasiNewtonLBFGS< TElastix >::ConstPointer = itk::SmartPointer<const Self> |
Definition at line 100 of file elxQuasiNewtonLBFGS.h.
using elastix::QuasiNewtonLBFGS< TElastix >::EventPassThroughPointer = typename EventPassThroughType::Pointer |
Definition at line 131 of file elxQuasiNewtonLBFGS.h.
using elastix::QuasiNewtonLBFGS< TElastix >::EventPassThroughType = itk::ReceptorMemberCommand<Self> |
Definition at line 130 of file elxQuasiNewtonLBFGS.h.
using elastix::QuasiNewtonLBFGS< TElastix >::ITKBaseType = typename Superclass2::ITKBaseType |
Definition at line 125 of file elxQuasiNewtonLBFGS.h.
using elastix::QuasiNewtonLBFGS< TElastix >::LineOptimizerPointer = LineOptimizerType::Pointer |
Definition at line 129 of file elxQuasiNewtonLBFGS.h.
using elastix::QuasiNewtonLBFGS< TElastix >::LineOptimizerType = itk::MoreThuenteLineSearchOptimizer |
Extra typedefs
Definition at line 128 of file elxQuasiNewtonLBFGS.h.
using elastix::QuasiNewtonLBFGS< TElastix >::Pointer = itk::SmartPointer<Self> |
Definition at line 99 of file elxQuasiNewtonLBFGS.h.
using elastix::QuasiNewtonLBFGS< TElastix >::Self = QuasiNewtonLBFGS |
Standard ITK.
Definition at line 96 of file elxQuasiNewtonLBFGS.h.
using elastix::QuasiNewtonLBFGS< TElastix >::Superclass1 = QuasiNewtonLBFGSOptimizer |
Definition at line 97 of file elxQuasiNewtonLBFGS.h.
using elastix::QuasiNewtonLBFGS< TElastix >::Superclass2 = OptimizerBase<TElastix> |
Definition at line 98 of file elxQuasiNewtonLBFGS.h.
|
strong |
Definition at line 86 of file itkQuasiNewtonLBFGSOptimizer.h.
|
protected |
|
overrideprotecteddefault |
|
overridevirtual |
Reimplemented from elastix::BaseComponent.
|
overridevirtual |
Reimplemented from elastix::BaseComponent.
|
overridevirtual |
Reimplemented from elastix::BaseComponent.
|
overridevirtual |
Reimplemented from elastix::BaseComponent.
|
overridevirtual |
Methods to set parameters and print output at different stages in the registration process.
Reimplemented from elastix::BaseComponent.
|
protectedvirtual |
Generate a string, representing the phase of optimisation (line search, main)
elastix::QuasiNewtonLBFGS< TElastix >::elxClassNameMacro | ( | "QuasiNewtonLBFGS< TElastix >" | ) |
Name of this class. Use this name in the parameter file to select this specific optimizer.
example: (Optimizer "QuasiNewtonLBFGS")
|
virtual |
Run-time type information (and related methods).
Reimplemented from itk::QuasiNewtonLBFGSOptimizer.
|
protectedvirtual |
Convert the line search stop condition to a string
|
virtual |
|
private |
elastix::QuasiNewtonLBFGS< TElastix >::ITK_DISALLOW_COPY_AND_MOVE | ( | QuasiNewtonLBFGS< TElastix > | ) |
|
overrideprotected |
Call the superclass' implementation. If an ExceptionObject is caught, because the line search optimizer tried a too big step, the exception is printed, but ignored further. The optimizer stops, but elastix just goes on to the next resolution.
|
static |
Method for creation through the object factory.
|
override |
Check if any scales are set, and set the UseScales flag on or off; after that call the superclass' implementation
|
overrideprotectedvirtual |
Reimplement the superclass. Calls the superclass' implementation and checks if the MoreThuente line search routine has stopped with Wolfe conditions satisfied.
Reimplemented from itk::QuasiNewtonLBFGSOptimizer.
|
private |
Definition at line 187 of file elxQuasiNewtonLBFGS.h.
|
private |
Definition at line 192 of file elxQuasiNewtonLBFGS.h.
|
private |
Definition at line 195 of file elxQuasiNewtonLBFGS.h.
|
protected |
Definition at line 161 of file elxQuasiNewtonLBFGS.h.
|
private |
Definition at line 193 of file elxQuasiNewtonLBFGS.h.
|
private |
Definition at line 194 of file elxQuasiNewtonLBFGS.h.
|
private |
Definition at line 196 of file elxQuasiNewtonLBFGS.h.
|
private |
Definition at line 197 of file elxQuasiNewtonLBFGS.h.
Generated on 2024-07-17 for elastix by 1.11.0 (9b424b03c9833626cd435af22a444888fbbb192d) |