![]() |
Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages |
#include <elxPreconditionedGradientDescent.h>
A gradient descent optimizer with a decaying gain.
This class is a wrap around the AdaptiveStochasticPreconditionedGradientOptimizer class. It takes care of setting parameters and printing progress information. For more information about the optimization method, please read the documentation of the AdaptiveStochasticPreconditionedGradientOptimizer class.
The parameters used in this class are:
Optimizer: Select this optimizer as follows:
(Optimizer "PreconditionedGradientDescent")
MaximumNumberOfIterations: The maximum number of iterations in each resolution.
example: (MaximumNumberOfIterations 100 100 50)
Default/recommended value: 500.
MaximumNumberOfSamplingAttempts: The maximum number of sampling attempts. Sometimes not enough corresponding samples can be drawn, upon which an exception is thrown. With this parameter it is possible to try to draw another set of samples.
example: (MaximumNumberOfSamplingAttempts 10 15 10)
Default value: 0, i.e. just fail immediately, for backward compatibility.
SP_a: The gain
SP_a can be defined for each resolution.
example: (SP_a 3200.0 3200.0 1600.0)
The default value is 400.0. Tuning this variable for you specific problem is recommended.
SP_A: The gain
SP_A can be defined for each resolution.
example: (SP_A 50.0 50.0 100.0)
The default/recommended value is 50.0.
SP_alpha: The gain
SP_alpha can be defined for each resolution.
example: (SP_alpha 0.602 0.602 0.602)
The default/recommended value is 0.602.
Definition at line 72 of file elxPreconditionedGradientDescent.h.
Data Structures | |
struct | SettingsType |
Static Public Member Functions | |
static Pointer | New () |
![]() | |
static Pointer | New () |
![]() | |
static Pointer | New () |
![]() | |
static Pointer | New () |
![]() | |
static Pointer | New () |
![]() | |
template<typename TBaseComponent > | |
static auto | AsITKBaseType (TBaseComponent *const baseComponent) -> decltype(baseComponent->GetAsITKBaseType()) |
static void | InitializeElastixExecutable () |
static bool | IsElastixLibrary () |
Protected Member Functions | |
virtual void | AddRandomPerturbation (const ParametersType &initialParameters, ParametersType &perturbedParameters, double sigma) |
virtual void | AutomaticParameterEstimation () |
virtual void | GetScaledDerivativeWithExceptionHandling (const ParametersType ¶meters, DerivativeType &derivative) |
PreconditionedGradientDescent () | |
virtual void | PrintSettingsVector (const SettingsVectorType &settings) const |
virtual void | SampleGradients (const ParametersType &mu0, double &sigma1, double &sigma2) |
virtual void | SetSelfHessian () |
virtual | ~PreconditionedGradientDescent () |
![]() | |
AdaptiveStochasticPreconditionedGradientDescentOptimizer () | |
virtual void | UpdateCurrentTime () |
virtual | ~AdaptiveStochasticPreconditionedGradientDescentOptimizer () |
![]() | |
virtual double | Compute_a (double k) const |
StochasticPreconditionedGradientDescentOptimizer () | |
virtual void | UpdateCurrentTime () |
virtual | ~StochasticPreconditionedGradientDescentOptimizer () |
![]() | |
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 | |
![]() | |
virtual bool | GetNewSamplesEveryIteration () const |
OptimizerBase ()=default | |
virtual void | SelectNewSamples () |
~OptimizerBase () override=default | |
![]() | |
BaseComponentSE ()=default | |
~BaseComponentSE () override=default | |
![]() | |
BaseComponent ()=default | |
virtual | ~BaseComponent ()=default |
Private Attributes | |
elxOverrideGetSelfMacro | |
bool | m_AutomaticParameterEstimation |
bool | m_AutomaticParameterEstimationDone |
unsigned long | m_CurrentNumberOfSamplingAttempts |
unsigned long | m_MaximumNumberOfSamplingAttempts |
bool | m_PreconditionMatrixSet |
unsigned long | m_PreviousErrorAtIteration |
using elastix::PreconditionedGradientDescent< TElastix >::ConstPointer = itk::SmartPointer<const Self> |
Definition at line 84 of file elxPreconditionedGradientDescent.h.
|
protected |
Samplers:
Definition at line 190 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 199 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 198 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 197 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 196 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 195 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 194 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 193 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 192 of file elxPreconditionedGradientDescent.h.
using elastix::PreconditionedGradientDescent< TElastix >::ITKBaseType = typename Superclass2::ITKBaseType |
Definition at line 106 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 191 of file elxPreconditionedGradientDescent.h.
using elastix::PreconditionedGradientDescent< TElastix >::Pointer = itk::SmartPointer<Self> |
Definition at line 83 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 187 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 186 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 185 of file elxPreconditionedGradientDescent.h.
|
protected |
Other protected typedefs
Definition at line 184 of file elxPreconditionedGradientDescent.h.
using elastix::PreconditionedGradientDescent< TElastix >::Self = PreconditionedGradientDescent |
Standard ITK.
Definition at line 80 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 181 of file elxPreconditionedGradientDescent.h.
using elastix::PreconditionedGradientDescent< TElastix >::Superclass1 = AdaptiveStochasticPreconditionedGradientDescentOptimizer |
Definition at line 81 of file elxPreconditionedGradientDescent.h.
using elastix::PreconditionedGradientDescent< TElastix >::Superclass2 = OptimizerBase<TElastix> |
Definition at line 82 of file elxPreconditionedGradientDescent.h.
|
protected |
|
inlineprotectedvirtual |
Definition at line 202 of file elxPreconditionedGradientDescent.h.
|
protectedvirtual |
Helper function that adds a random perturbation delta to the input parameters, with delta ~ sigma * N(0,I). Used by SampleGradients.
|
virtual |
Reimplemented from elastix::BaseComponent.
|
virtual |
Reimplemented from elastix::BaseComponent.
|
virtual |
Reimplemented from elastix::BaseComponent.
|
protectedvirtual |
Estimates some reasonable values for the parameters SP_a, SP_alpha (=1), SigmoidMin, SigmoidMax (=1), and SigmoidScale.
|
virtual |
Reimplemented from elastix::BaseComponent.
|
virtual |
Methods invoked by elastix, in which parameters can be set and progress information can be printed.
Reimplemented from elastix::BaseComponent.
elastix::PreconditionedGradientDescent< TElastix >::elxClassNameMacro | ( | "PreconditionedGradientDescent< TElastix >" | ) |
Name of this class. Use this name in the parameter file to select this specific optimizer. example: (Optimizer "PreconditionedGradientDescent")
|
virtual |
|
virtual |
Run-time type information (and related methods).
Reimplemented from itk::AdaptiveStochasticPreconditionedGradientDescentOptimizer.
|
virtual |
Get the MaximumNumberOfSamplingAttempts.
|
protectedvirtual |
Helper function, which calls GetScaledValueAndDerivative and does some exception handling. Used by SampleGradients.
elastix::PreconditionedGradientDescent< TElastix >::ITK_DISALLOW_COPY_AND_MOVE | ( | PreconditionedGradientDescent< TElastix > | ) |
|
virtual |
Stop optimization and pass on exception.
|
static |
Method for creation through the object factory.
|
protectedvirtual |
Print the contents of the settings vector to elxout.
|
virtual |
Set the SelfHessian as a preconditioning matrix and call Superclass' implementation. Only done when m_PreconditionMatrixSet == false; If automatic gain estimation is desired, then estimate SP_a, SP_alpha SigmoidScale, SigmoidMax, SigmoidMin. After that call Superclass' implementation.
Reimplemented from itk::PreconditionedGradientDescentOptimizer.
|
protectedvirtual |
Measure some derivatives, exact and approximated. Returns the sigma1 and sigma2. Needed for the automatic parameter estimation. Gradients are measured at position mu_n, which are generated according to: mu_n - mu_0 ~ N(0, perturbationSigma P ); perturbationSigma = sigma1 = 1/N g_0' P g_0, where g_0 is the exact gradient at mu_0, and N the number of parameters. sigma2 = 1/N sum_n g_n' P g_n / (sum_n n), where g_n is the approximated gradient at mu_0. NB: sigma1 = sqr(sigma_1), sigma2 = sqr(sigma_2), compared to my notes.
|
virtual |
Set/Get whether automatic parameter estimation is desired. If true, make sure to set the maximum step length.
The following parameters are automatically determined: SP_a = 2*SP_A, SP_alpha (=1), SigmoidMin, SigmoidMax (=1), SigmoidScale. A usually suitable value for SP_A is 20, which is the default setting, if not specified by the user.
|
inlinevirtual |
Add SetCurrentPositionPublic, which calls the protected SetCurrentPosition of the itkAdaptiveStochasticPreconditionedGradientDescentOptimizer class.
Reimplemented from elastix::OptimizerBase< TElastix >.
Definition at line 144 of file elxPreconditionedGradientDescent.h.
|
virtual |
Set the MaximumNumberOfSamplingAttempts.
|
protectedvirtual |
Get the SelfHessian from the metric and submit as Precondition matrix
|
virtual |
Check if any scales are set, and set the UseScales flag on or off; after that call the superclass' implementation.
Reimplemented from itk::StochasticPreconditionedGradientDescentOptimizer.
|
private |
Definition at line 255 of file elxPreconditionedGradientDescent.h.
|
private |
Definition at line 265 of file elxPreconditionedGradientDescent.h.
|
private |
Definition at line 266 of file elxPreconditionedGradientDescent.h.
|
private |
Definition at line 259 of file elxPreconditionedGradientDescent.h.
|
private |
Private variables for the sampling attempts.
Definition at line 258 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 207 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 208 of file elxPreconditionedGradientDescent.h.
|
private |
Private variables for self Hessian support.
Definition at line 263 of file elxPreconditionedGradientDescent.h.
|
private |
Definition at line 260 of file elxPreconditionedGradientDescent.h.
|
protected |
RandomGenerator for AddRandomPerturbation.
Definition at line 212 of file elxPreconditionedGradientDescent.h.
|
protected |
Variable to store the automatically determined settings for each resolution.
Definition at line 205 of file elxPreconditionedGradientDescent.h.
|
protected |
Definition at line 209 of file elxPreconditionedGradientDescent.h.
Generated on Wed 12 Apr 2023
for elastix by ![]() |
![]() |