FLImaging 7.3.20.1
InternalOptimizerStochasticGradientDescent.h
1#pragma once
2
3#if _MSC_VER >= 1900 && defined(_M_X64)
4
5#include "InternalOptimizerGradientDescent.h"
6
7namespace FLImaging
8{
9 namespace AI
10 {
11 template <typename T>
12 class CComputationalBase;
13
14 template <typename T>
15 class CComputationalGraphPlaceholder;
16
17 template <typename T>
18 class CComputationalGraphAugmentationBase;
19
20 template <typename T>
21 class CClassEqualizerBase;
22
23 template <typename T>
24 class CTensor;
25
26 template <typename T>
27 class FL_EXPORT CInternalOptimizerStochasticGradientDescent : public CInternalOptimizerGradientDescent<T>
28 {
29 public:
30 CInternalOptimizerStochasticGradientDescent();
31 CInternalOptimizerStochasticGradientDescent(const CInternalOptimizerStochasticGradientDescent<T>& ob);
32
33 virtual ~CInternalOptimizerStochasticGradientDescent();
34
35 virtual const CResult Assign(const CInternalOptimizerStochasticGradientDescent<T>& ob);
36 virtual const CResult Assign(const CInternalOptimizerStochasticGradientDescent<T>* pOb);
37
38 virtual CInternalOptimizerBase<T>* Clone() const override;
39
40 virtual const CResult Initialize() override;
41
42 virtual const CResult Fit(T* pClippingThreshold = nullptr, int32_t* pI32IterationFeedbackFeedback = nullptr) override;
43 virtual T Validate(int32_t* pI32Iteration = nullptr) override;
44
45 virtual const CResult SetMiniBatchSize(int64_t i64Size = 0);
46 virtual int64_t GetMiniBatchSize() const;
47
48 virtual const CResult SetMiniBatchIteration(int64_t i64Size = 0);
49 virtual int64_t GetMiniBatchIteration() const;
50
51 virtual int64_t GetTotalIteration() const override;
52
53 virtual const CResult InitializeMiniBatch() override;
54
55 virtual const CResult EnableAutoSubdivision(bool bAutoSubdivision);
56 virtual bool IsAutoSubdivisionEnabled() const;
57
58 virtual const CResult EnableIterationMode(bool bIterationMode);
59 virtual bool IsIterationModeEnabled() const;
60
61 virtual const CResult SetSubdivisionMultiplier(int64_t i64SubdivisionMultiplier = 1);
62 virtual int64_t GetSubdivisionMultiplier() const;
63
64 DeclareGetClassType();
65
66 protected:
67 virtual int64_t GetRemainingIteration() const;
68 virtual const CResult TerminateCurrentIteration();
69
70 virtual int64_t GetMaxMiniBatchSize() const;
71 virtual int64_t GetActualMiniBatchSize() const;
72
73 protected:
74 bool m_bBatchSizeInitialized;
75
76 bool m_bAutoSubdivision;
77 bool m_bIterationMode;
78 int64_t m_i64SubdivisionMultiplier;
79 int64_t m_i64IterationSize;
80 private:
81 template<typename T>
82 friend class CValidatorBase;
83
84 template<typename T>
85 friend class CValidatorForClassifier;
86
87 template<typename T>
88 friend class CValidatorForSemanticSegmentation;
89
90 template<typename T>
91 friend class CValidatorForObjectDetection;
92
93 template<typename T>
94 friend class COptimizer;
95 };
96
97 typedef CInternalOptimizerStochasticGradientDescent<float> CInternalOptimizerStochasticGradientDescentF;
98 typedef CInternalOptimizerStochasticGradientDescent<double> CInternalOptimizerStochasticGradientDescentD;
99
100 typedef CInternalOptimizerStochasticGradientDescent<float> CInternalOptimizerSGDF;
101 typedef CInternalOptimizerStochasticGradientDescent<double> CInternalOptimizerSGDD;
102
103 template <typename T>
104 using CInternalOptimizerSGD = CInternalOptimizerStochasticGradientDescent<T>;
105 }
106}
107
108#endif
Definition AlgorithmAIBase.h:18
@ Assign
Set the value of CGUIPropertyItemView3DFigure to the specified figure.
Definition DefinitionsGUIView3D.h:2930