18#ifndef itkStochasticVarianceReducedGradientDescentOptimizer_h
19#define itkStochasticVarianceReducedGradientDescentOptimizer_h
22#include "itkPlatformMultiThreader.h"
70 using Superclass::MeasureType;
71 using Superclass::ParametersType;
72 using Superclass::DerivativeType;
73 using Superclass::CostFunctionType;
114 itkSetMacro(LearningRate,
double);
117 itkGetConstReferenceMacro(LearningRate,
double);
120 itkSetMacro(NumberOfIterations,
unsigned long);
123 itkGetConstMacro(LBFGSMemory,
unsigned int);
126 itkGetConstReferenceMacro(NumberOfIterations,
unsigned long);
129 itkGetConstReferenceMacro(NumberOfInnerIterations,
unsigned long);
132 itkGetConstMacro(CurrentIteration,
unsigned int);
135 itkGetConstMacro(CurrentInnerIteration,
unsigned int);
138 itkGetConstReferenceMacro(Value,
double);
144 itkGetConstReferenceMacro(Gradient, DerivativeType);
147 itkGetConstReferenceMacro(SearchDir, DerivativeType);
150 itkSetMacro(PreviousPosition, ParametersType);
153 itkGetConstReferenceMacro(PreviousPosition, ParametersType);
156 itkSetMacro(PreviousGradient, DerivativeType);
159 itkGetConstReferenceMacro(PreviousGradient, DerivativeType);
165 this->
m_Threader->SetNumberOfWorkUnits(numberOfThreads);
168 itkSetMacro(UseMultiThread,
bool);
170 itkSetMacro(UseOpenMP,
bool);
171 itkSetMacro(UseEigen,
bool);
177 PrintSelf(std::ostream & os, Indent indent)
const override;
217 static ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION
A cost function that applies a scaling to another cost function.
ScaledSingleValuedNonLinearOptimizer()
NonLinearOptimizer::ScalesType ScalesType
Implement a gradient descent optimizer.
void StartOptimization() override
ParametersType m_PreviousSearchDir
virtual void MetricErrorResponse(ExceptionObject &err)
ParametersType m_MeanSearchDir
~StochasticVarianceReducedGradientDescentOptimizer() override=default
unsigned long m_CurrentInnerIteration
ThreaderType::WorkUnitInfo ThreadInfoType
DerivativeType m_PreviousGradient
virtual void AdvanceOneStep()
ParametersType m_PreviousPosition
unsigned long m_NumberOfInnerIterations
virtual void ResumeOptimization()
void ThreadedAdvanceOneStep(ThreadIdType threadId, ParametersType &newPosition)
void SetNumberOfWorkUnits(ThreadIdType numberOfThreads)
static ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION AdvanceOneStepThreaderCallback(void *arg)
@ MaximumNumberOfIterations
@ GradientMagnitudeTolerance
DerivativeType m_Gradient
StochasticVarianceReducedGradientDescentOptimizer()
ITK_DISALLOW_COPY_AND_MOVE(StochasticVarianceReducedGradientDescentOptimizer)
ParametersType m_SearchDir
unsigned long m_CurrentIteration
ThreaderType::Pointer m_Threader
virtual void StopOptimization()
StopConditionType m_StopCondition
unsigned long m_NumberOfIterations
unsigned long m_LBFGSMemory
SmartPointer< const Self > ConstPointer
void PrintSelf(std::ostream &os, Indent indent) const override
itk::PlatformMultiThreader ThreaderType
ParametersType * t_NewPosition