3#if _MSC_VER >= 1900 && defined(_M_X64)
5#include "DefinitionsAI.h"
13 class CInternalOptimizerBase;
16 class CComputationalGraph;
19 class CComputationalGraphPlaceholder;
22 class CComputationalGraphAugmentationBase;
28 class CLearningRateSchedulerBase;
31 class CClassEqualizerBase;
37 class CInternalOptimizerSpecBase;
44 COptimizer(
const COptimizer<T>& otmz);
45 COptimizer(
const COptimizer<T>* pOtmz);
46 virtual ~COptimizer();
48 const COptimizer<T>& operator=(
const COptimizer<T>& otmz);
50 virtual const CResult
Clear();
51 virtual const CResult ClearMemory();
52 virtual const CResult ClearHistories();
54 virtual const CResult
Assign(
const COptimizer<T>& ob);
55 virtual const CResult
Assign(
const COptimizer<T>* pOb);
57 virtual const CResult Initialize();
58 virtual const CResult InitializeBatch();
59 virtual const CResult InitializeMiniBatch();
60 virtual bool IsInitialized()
const;
62 virtual const CResult SetFunction(CComputationalGraph<T>& cgFunction);
63 virtual const CResult SetFunction(CComputationalGraph<T>* pCgFunction);
64 virtual CComputationalGraph<T>& GetFunction();
66 virtual const CResult SetGPUIndices(
const std::vector<int32_t>& vctGPUIndices);
67 virtual const CResult SetGPUIndices(
const Base::CFLArray<int32_t>& flaGPUIndices);
68 virtual const CResult SetGPUIndices(
const Base::CFLArray<uint32_t>& flaGPUIndices);
69 virtual const std::vector<int32_t>& GetGPUIndices()
const;
71 virtual const CResult SetInternalOptimizerSpec(CInternalOptimizerSpecBase<T>* pInternalOptimizerSpec);
72 virtual const CInternalOptimizerSpecBase<T>* GetInternalOptimizerSpec()
const;
74 virtual const CResult SetLearningRateScheduler(CLearningRateSchedulerBase<T>& lrScheduler);
75 virtual const CResult SetLearningRateScheduler(CLearningRateSchedulerBase<T>* pLrScheduler);
76 virtual const CLearningRateSchedulerBase<T>* GetLearningRateScheduler()
const;
78 virtual const CResult EnableClassEqualization(
bool bEnable);
79 virtual bool IsClassEqualizationEnabled()
const;
81 virtual const CResult SetClassEqualizer(CClassEqualizerBase<T>& ce);
82 virtual const CResult SetClassEqualizer(CClassEqualizerBase<T>* pCe);
83 virtual const CClassEqualizerBase<T>* GetClassEqualizer()
const;
85 virtual const CResult SetValidator(CValidatorBase<T>& validator);
86 virtual const CResult SetValidator(CValidatorBase<T>* pValidator);
87 virtual const CValidatorBase<T>* GetValidator()
const;
89 virtual const std::vector<int64_t>& GetValidationIndices()
const;
91 virtual const CResult SetLearningRateSchedulerMode(ELearningRateSchedulerMode eLrsMode = ELearningRateSchedulerMode_Epoch);
92 virtual ELearningRateSchedulerMode GetLearningRateSchedulerMode()
const;
94 virtual const CResult ReducedWeightGradients();
95 virtual const CResult PropagateWeights();
97 virtual const CResult ResetDerivatives();
99 virtual const CResult EnableResetDerivatives(
bool bResetDerivatives);
100 virtual bool IsResetDerivativesEnabled()
const;
102 virtual int64_t GetTotalIteration()
const;
103 virtual int64_t GetSubdivisionCount()
const;
104 virtual int64_t GetMiniBatchSizePerSubdivision()
const;
105 virtual int64_t GetTotalBatchSize()
const;
106 virtual int64_t GetActualTotalBatchSize()
const;
107 virtual int64_t GetValidationTotalIteration()
const;
108 virtual int64_t GetCurrentEpoch()
const;
110 virtual const CResult Fit(T* pClippingThreshold =
nullptr, int32_t* pI32IterationFeedback =
nullptr, int32_t* pI32CumulativeIterationFeedback =
nullptr, Base::CFLArray<int32_t>* pFlaSubdivisionFeedback =
nullptr,
bool* pBStopImmediately =
nullptr, int64_t* pI64MeanTimePerMiniBatch =
nullptr, int64_t* pI64LastTimeOfMiniBatch =
nullptr);
111 virtual T Validate(Base::CFLArray<int32_t>* pFlaIteration =
nullptr);
112 virtual const CTensor<T>& GetResult()
const;
114 virtual const std::vector<T>& GetLearningResultAccuracyHistory()
const;
115 virtual T GetLearningResultLastAccuracyValue()
const;
117 virtual const Base::CFLArray<uint32_t> GetInvolvedDeviceIndices()
const;
118 virtual const CInternalOptimizerBase<T>* GetInternalOptimizer()
const;
120 virtual const CResult SetSubdivisionMultiplier(int64_t i64SubdivisionMultiplier = 1);
121 virtual int64_t GetSubdivisionMultiplier()
const;
123 virtual const CResult SetSharedRandomSeed(
const std::pair<CComputationalGraph<T>*, CComputationalGraph<T>*>& prSharedRandomSeed);
124 virtual const CResult SetSharedRandomSeed(
const std::pair<CComputationalGraph<T>*, CComputationalGraph<T>*>* pPrSharedRandomSeed);
125 virtual const CResult SetSharedRandomSeed(
const std::vector<std::pair<CComputationalGraph<T>*, CComputationalGraph<T>*>>& vctSharedRandomSeed);
126 virtual const CResult SetSharedRandomSeed(
const std::vector<std::pair<CComputationalGraph<T>*, CComputationalGraph<T>*>>* pVctSharedRandomSeed);
127 virtual const std::vector<std::pair<CComputationalGraph<T>*, CComputationalGraph<T>*>>& GetSharedRandomSeed(int64_t i64DeviceIndex)
const;
129 virtual const CResult SetMemoryLimitRatio(
double f64MemoryLimitRatio = 1.);
130 virtual double GetMemoryLimitRatio()
const;
133 virtual void Throw(
const CResult& res,
const wchar_t* pWcsExtraMessage =
nullptr)
const override;
134 virtual const CResult TerminateMiniBatch();
135 virtual const CResult InitializeFit();
136 virtual const CResult TerminateFit();
137 virtual int64_t GetRemainingIteration()
const;
138 virtual const CResult TerminateCurrentIteration();
139 virtual int64_t GetActualMiniBatchSize()
const;
140 virtual const CResult CopyBatchParams(
bool bDifferent);
141 virtual const CResult ConvertInternalOptimizerSpecToOptimizer();
142 virtual const CResult SynchronizeValueAttribute();
143 virtual const CResult UpdateValidationHistory();
146 std::vector<int32_t>& m_vctGPUIndices;
147 std::vector<int32_t>& m_vctDeviceIndices;
149 double m_f64MemoryLimitRatio;
151 CInternalOptimizerSpecBase<T>* m_pInternalOptimizerSpec;
152 std::vector<CInternalOptimizerBase<T>*>& m_vctOptimizer;
153 std::vector<CValidatorBase<T>*>& m_vctValidator;
154 CInternalOptimizerBase<T>* m_pObBaseOptimizer;
156 CComputationalGraph<T>* m_pCgFunction;
158 CLearningRateSchedulerBase<T>* m_pLrScheduler;
159 CClassEqualizerBase<T>* m_pClassEqualizer;
160 bool m_bClassEqualization;
161 CValidatorBase<T>* m_pValidator;
162 ELearningRateSchedulerMode m_eLrsMode;
164 std::vector<int64_t>& m_vctLearnOrders;
165 std::vector<int64_t>& m_vctValidationOrders;
166 int64_t m_i64CurrentIteration;
167 int64_t m_i64TotalIteration;
168 int64_t m_i64TotalIterationPerGPU;
169 int64_t m_i64Subdivision;
170 int64_t m_i64SubMiniBatchSize;
171 int64_t m_i64ActualMiniBatchSize;
172 int64_t m_i64TotalBatchSize;
173 int64_t m_i64ValidationTotalIteration;
174 int64_t m_i64CurrentEpoch;
176 CTensor<T> m_tsrResult;
177 int64_t m_i64ResultCount;
182 bool m_bResetDerivatives;
185 int64_t m_i64PrevInputSize;
186 int64_t m_i64PrevPlaceholderSize;
187 std::vector<std::tuple<ENodeType, EDataType, EValueAttribute, ENodeOperator, std::vector<int64_t>>>& m_vctPrevInputInfo;
188 std::vector<std::vector<int64_t>>& m_vctPrevPlaceholderShape;
190 int32_t m_i32DeviceCount;
191 std::vector<T>& m_vctLearnBatchWeights;
192 std::vector<T>& m_vctValidationBatchWeights;
193 std::vector<T>& m_vctValidationHistory;
195 int64_t m_i64SubdivisionMultiplier;
197 std::vector<std::vector<std::pair<CComputationalGraph<T>*, CComputationalGraph<T>*>>>& m_vct2SharedRandomSeed;
200 friend class CValidatorBase;
203 friend class CValidatorForClassifier;
206 friend class CValidatorForSemanticSegmentation;
알고리즘에서 필요한 프로세싱 유닛 AI 클래스
Definition AlgorithmAIBase.h:25
Definition AlgorithmAIBase.h:16
@ Assign
CGUIPropertyItemView3DFigure 의 값을 해당 도형으로 설정하는 함수
Definition DefinitionsGUIView3D.h:2732
@ Clear
도형 정리 메뉴
Definition DefinitionsGUI.h:2058