18#ifndef elxAdaptiveStochasticVarianceReducedGradient_h
19#define elxAdaptiveStochasticVarianceReducedGradient_h
26#include "itkMersenneTwisterRandomVariateGenerator.h"
29#include "itkPlatformMultiThreader.h"
192template <
class TElastix>
220 using Superclass1::CostFunctionType;
221 using Superclass1::CostFunctionPointer;
231 using typename Superclass1::ParametersType;
282 itkSetMacro(AutomaticParameterEstimation,
bool);
283 itkGetConstMacro(AutomaticParameterEstimation,
bool);
286 itkSetMacro(MaximumStepLength,
double);
287 itkGetConstMacro(MaximumStepLength,
double);
296 itkGetConstReferenceMacro(MeanGradient, DerivativeType);
305 this->m_Threader->SetNumberOfWorkUnits(numberOfThreads);
323 double a, A, alpha, fmax, fmin, omega;
445 static itk::ITK_THREAD_RETURN_TYPE
479#ifndef ITK_MANUAL_INSTANTIATION
480# include "elxAdaptiveStochasticVarianceReducedGradient.hxx"
A gradient descent optimizer with an adaptive gain.
SizeValueType m_NumberOfJacobianMeasurements
void AdvanceOneStep() override
void AfterEachIteration() override
bool m_AutomaticParameterEstimationDone
void ThreadedAdvanceOneStep(ThreadIdType threadId, ParametersType &newPosition)
SizeValueType m_NumberOfInnerLoopSamples
typename ImageSampleContainerType::Pointer ImageSampleContainerPointer
AdaptiveStochasticVarianceReducedGradient()
SizeValueType m_NumberOfGradientMeasurements
void MetricErrorResponse(itk::ExceptionObject &err) override
virtual void AutomaticParameterEstimation()
typename RegistrationType::FixedImageType FixedImageType
SizeValueType m_PreviousErrorAtIteration
void BeforeRegistration() override
virtual void AutomaticParameterEstimationOriginal()
JacobianType TransformJacobianType
virtual void GetScaledDerivativeWithExceptionHandling(const ParametersType ¶meters, DerivativeType &derivative)
SettingsVectorType m_SettingsVector
itk::Statistics::MersenneTwisterRandomVariateGenerator RandomGeneratorType
typename std::vector< SettingsType > SettingsVectorType
bool m_UseNoiseCompensation
DerivativeType m_ExactGradient
itk::SizeValueType SizeValueType
void StopOptimization() override
typename Superclass2::ITKBaseType ITKBaseType
AdvancedTransformType::Pointer m_AdvancedTransform
typename JacobianType::ValueType JacobianValueType
RandomGeneratorType::Pointer m_RandomGenerator
void AfterRegistration() override
typename ImageSamplerBaseType::ImageSampleType ImageSampleType
SizeValueType m_MaximumNumberOfSamplingAttempts
typename ProgressCommand::Pointer ProgressCommandPointer
typename itkRegistrationType::TransformType TransformType
virtual void SampleGradients(const ParametersType &mu0, double perturbationSigma, double &gg, double &ee)
itk::SmartPointer< const Self > ConstPointer
void SetNumberOfWorkUnits(ThreadIdType numberOfThreads)
itk::SmartPointer< Self > Pointer
typename ImageSamplerBaseType::Pointer ImageSamplerBasePointer
double m_MaximumStepLength
typename FixedImageType::RegionType FixedImageRegionType
ITK_DISALLOW_COPY_AND_MOVE(AdaptiveStochasticVarianceReducedGradient)
typename FixedImageType::IndexType FixedImageIndexType
void StartOptimization() override
typename ImageRandomCoordinateSamplerType::Pointer ImageRandomCoordinateSamplerPointer
static itk::ITK_THREAD_RETURN_TYPE AdvanceOneStepThreaderCallback(void *arg)
SizeValueType m_OutsideIterations
itkStaticConstMacro(MovingImageDimension, unsigned int, MovingImageType::ImageDimension)
typename ImageRandomSamplerType::Pointer ImageRandomSamplerPointer
bool m_OriginalButSigmoidToDefault
~AdaptiveStochasticVarianceReducedGradient() override=default
virtual void PrintSettingsVector(const SettingsVectorType &settings) const
SizeValueType m_NumberOfBandStructureSamples
typename ImageRadomSampleContainerType::Pointer ImageRadomSampleContainerPointer
typename FixedImageType::PointType FixedImagePointType
void BeforeEachResolution() override
typename TransformType::JacobianType JacobianType
typename TransformType::ScalarType CoordinateRepresentationType
DerivativeType m_MeanGradient
itkStaticConstMacro(FixedImageDimension, unsigned int, FixedImageType::ImageDimension)
typename ImageRandomSamplerType::ImageSampleContainerType ImageRadomSampleContainerType
typename AdvancedTransformType::NonZeroJacobianIndicesType NonZeroJacobianIndicesType
typename ImageRandomSamplerBaseType::Pointer ImageRandomSamplerBasePointer
typename RegistrationType::ITKBaseType itkRegistrationType
elxClassNameMacro("AdaptiveStochasticVarianceReducedGradient")
bool m_AutomaticParameterEstimation
virtual void AddRandomPerturbation(ParametersType ¶meters, double sigma)
SizeValueType m_CurrentNumberOfSamplingAttempts
typename ImageGridSamplerType::ImageSampleContainerType ImageSampleContainerType
SizeValueType m_MaxBandCovSize
typename RegistrationType::MovingImageType MovingImageType
SizeValueType m_NumberOfSamplesForExactGradient
typename ImageGridSamplerType::Pointer ImageGridSamplerPointer
virtual void AutomaticParameterEstimationUsingDisplacementDistribution()
SizeValueType m_NumberOfSpatialSamples
void AfterEachResolution() override
void ResumeOptimization() override
double m_SigmoidScaleFactor
This class is the elastix base class for all Optimizers.
typename ElastixType::RegistrationBaseType RegistrationType
itk::Optimizer ITKBaseType
typename ITKBaseType::ParametersType ParametersType
A specialized Command object for updating the progress of a filter.
itk::SmartPointer< Self > Pointer
This class implements a gradient descent optimizer with adaptive gain.
This is a helper class for the automatic parameter estimation of the ASGD optimizer.
This is a helper class for the automatic parameter estimation of the ASGD optimizer.
Samples image voxels on a regular grid.
Samples an image by randomly composing a set of physical coordinates.
This class is a base class for any image sampler that randomly picks samples.
Samples randomly some voxels of an image.
A class that defines an image sample, which is the coordinates of a point and its value.
This class is a base class for any image sampler.
Define a front-end to the STL "vector" container that conforms to the IndexedContainerInterface.
ParametersType * t_NewPosition