18#ifndef itkStochasticGradientDescentOptimizer_h
19#define itkStochasticGradientDescentOptimizer_h
22#include "itkPlatformMultiThreader.h"
71 using Superclass::MeasureType;
72 using Superclass::ParametersType;
73 using Superclass::DerivativeType;
74 using Superclass::CostFunctionType;
115 itkSetMacro(LearningRate,
double);
118 itkGetConstReferenceMacro(LearningRate,
double);
121 itkSetMacro(NumberOfIterations,
unsigned long);
124 itkGetConstMacro(LBFGSMemory,
unsigned int);
127 itkGetConstReferenceMacro(NumberOfIterations,
unsigned long);
130 itkGetConstReferenceMacro(NumberOfInnerIterations,
unsigned long);
133 itkGetConstMacro(CurrentIteration,
unsigned int);
136 itkGetConstMacro(CurrentInnerIteration,
unsigned int);
139 itkGetConstReferenceMacro(Value,
double);
145 itkGetConstReferenceMacro(Gradient, DerivativeType);
148 itkGetConstReferenceMacro(SearchDir, DerivativeType);
151 itkSetMacro(PreviousPosition, ParametersType);
154 itkGetConstReferenceMacro(PreviousPosition, ParametersType);
157 itkSetMacro(PreviousGradient, DerivativeType);
160 itkGetConstReferenceMacro(PreviousGradient, DerivativeType);
166 this->
m_Threader->SetNumberOfWorkUnits(numberOfThreads);
169 itkSetMacro(UseMultiThread,
bool);
171 itkSetMacro(UseOpenMP,
bool);
172 itkSetMacro(UseEigen,
bool);
178 PrintSelf(std::ostream & os, Indent indent)
const override;
218 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.
SmartPointer< const Self > ConstPointer
ParametersType m_PreviousSearchDir
static ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION AdvanceOneStepThreaderCallback(void *arg)
@ MaximumNumberOfIterations
@ GradientMagnitudeTolerance
virtual void ResumeOptimization()
ParametersType m_SearchDir
StochasticGradientDescentOptimizer()
ThreaderType::WorkUnitInfo ThreadInfoType
void PrintSelf(std::ostream &os, Indent indent) const override
virtual void MetricErrorResponse(ExceptionObject &err)
virtual void AdvanceOneStep()
DerivativeType m_PreviousGradient
StopConditionType m_StopCondition
itk::PlatformMultiThreader ThreaderType
ParametersType m_MeanSearchDir
virtual void StopOptimization()
unsigned long m_LBFGSMemory
void StartOptimization() override
unsigned long m_CurrentIteration
void SetNumberOfWorkUnits(ThreadIdType numberOfThreads)
ParametersType m_PreviousPosition
DerivativeType m_PrePreviousGradient
ThreaderType::Pointer m_Threader
~StochasticGradientDescentOptimizer() override=default
unsigned long m_NumberOfInnerIterations
unsigned long m_NumberOfIterations
ParametersType m_PrePreviousSearchDir
ITK_DISALLOW_COPY_AND_MOVE(StochasticGradientDescentOptimizer)
void ThreadedAdvanceOneStep(ThreadIdType threadId, ParametersType &newPosition)
unsigned long m_CurrentInnerIteration
DerivativeType m_Gradient
ParametersType * t_NewPosition