FLImaging 6.5.16.1
LearningRateSchedulerMultiStep.h
1#pragma once
2
3#if _MSC_VER >= 1900 && defined(_M_X64)
4
5#include "LearningRateSchedulerBase.h"
6
7namespace FLImaging
8{
9 namespace AI
10 {
11 template <typename T>
12 class FL_EXPORT CLearningRateSchedulerMultiStep : public CLearningRateSchedulerBase<T>
13 {
14 public:
15 enum EMilestoneMode
16 {
17 EMilestoneMode_Unit = 0,
18 EMilestoneMode_Ratio,
19 };
20
21 CLearningRateSchedulerMultiStep();
22 CLearningRateSchedulerMultiStep(const CLearningRateSchedulerMultiStep<T>& lrs);
23 CLearningRateSchedulerMultiStep(const CLearningRateSchedulerMultiStep<T>* pLrs);
24
25 virtual ~CLearningRateSchedulerMultiStep();
26
27 virtual const CResult Assign(const CLearningRateSchedulerMultiStep<T>& lrs);
28 virtual const CResult Assign(const CLearningRateSchedulerMultiStep<T>* pLrs);
29
30 virtual const CResult Clear();
31 virtual const CResult Initialize() override;
32
33 virtual const CResult SetMilestoneMode(EMilestoneMode eMilestoneMode = EMilestoneMode_Unit);
34 virtual EMilestoneMode GetMilestoneMode() const;
35
36 virtual const CResult SetMilestones(const std::vector<T>& vctMilestones);
37 virtual const std::vector<T>& GetMilestones() const;
38
39 virtual const CResult SetGamma(T tGamma = (T)0.5);
40 virtual T GetGamma() const;
41
42 virtual const CResult Step(T tLoss = 0) override;
43
44 virtual const CResult ConvertMilestoneToMilestoneUnit(int64_t i64TotalCount = 0);
45
46
47 DeclareGetClassType();
48 SupportToDuplicateObject(CLearningRateSchedulerMultiStep<T>, *this);
49
50 protected:
51 EMilestoneMode m_eMilestoneMode;
52 std::vector<T>& m_vctMilestones;
53 std::vector<int64_t>& m_vctActualMilestonesUnit;
54 T m_tGamma;
55 int64_t m_i64CurrentIndex;
56 };
57
58
59 typedef CLearningRateSchedulerMultiStep<float> CLearningRateSchedulerMultiStepF;
60 typedef CLearningRateSchedulerMultiStep<double> CLearningRateSchedulerMultiStepD;
61
62 typedef CLearningRateSchedulerMultiStep<float> CLRSMultiStepF;
63 typedef CLearningRateSchedulerMultiStep<double> CLRSMultiStepD;
64
65 template <typename T>
66 using CLRSMultiStep = CLearningRateSchedulerMultiStep<T>;
67
68 }
69}
70
71#endif
@ Assign
Set the value of CGUIPropertyItemView3DFigure to the specified figure.
@ Clear
Clear all the figure objects.