FLImaging 6.6.27.1
LearningRateSchedulerReduceOnPlateau.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 CLearningRateSchedulerReduceOnPlateau : public CLearningRateSchedulerBase<T>
13 {
14 public:
15 enum ESchedulerMode
16 {
17 ESchedulerMode_Min= 0,
18 ESchedulerMode_Max,
19 };
20
21 enum EDynamicThresholdMode
22 {
23 EDynamicThresholdMode_None = 0,
24 EDynamicThresholdMode_Relative,
25 EDynamicThresholdMode_Absolute,
26 };
27
28 CLearningRateSchedulerReduceOnPlateau();
29 CLearningRateSchedulerReduceOnPlateau(const CLearningRateSchedulerReduceOnPlateau<T>& lrs);
30 CLearningRateSchedulerReduceOnPlateau(const CLearningRateSchedulerReduceOnPlateau<T>* pLrs);
31
32 virtual ~CLearningRateSchedulerReduceOnPlateau();
33
34 virtual const CResult Assign(const CLearningRateSchedulerReduceOnPlateau<T>& lrs);
35 virtual const CResult Assign(const CLearningRateSchedulerReduceOnPlateau<T>* pLrs);
36
37 virtual const CResult Clear();
38 virtual const CResult Initialize() override;
39
40
41 virtual const CResult SetMinLearningRate(T tMinLearningRate = 0);
42 virtual T GetMinLearningRate() const;
43
44 virtual const CResult SetGamma(T tGamma = (T)0.1);
45 virtual T GetGamma() const;
46
47 virtual const CResult SetPatience(int64_t i64Patience = 0);
48 virtual int64_t GetPatience() const;
49
50 virtual const CResult SetCoolDown(int64_t i64CoolDown = 0);
51 virtual int64_t GetCoolDown() const;
52
53 virtual const CResult SetSchedulerMode(ESchedulerMode eSchedulerMode = ESchedulerMode_Min);
54 virtual ESchedulerMode GetSchedulerMode() const;
55
56 virtual const CResult SetThreshold(T tThreshold = 0);
57 virtual T GetThreshold() const;
58
59 virtual const CResult SetThresholdMode(EDynamicThresholdMode eDynamicThresholdMode = EDynamicThresholdMode_Absolute);
60 virtual EDynamicThresholdMode GetThresholdMode() const;
61
62 virtual const CResult SetEpsilon(T tEpsilon = FL_EPSILON_FLOAT);
63 virtual T GetEpsilon() const;
64
65 virtual const CResult Step(T tLoss = 0) override;
66
67
68 DeclareGetClassType();
69 SupportToDuplicateObject(CLearningRateSchedulerReduceOnPlateau<T>, *this);
70
71 protected:
72 T m_tMinLearningRate;
73 T m_tGamma;
74 int64_t m_i64Patience;
75 int64_t m_i64CoolDown;
76 ESchedulerMode m_eSchedulerMode;
77 T m_tThreshold;
78 EDynamicThresholdMode m_eDynamicThresholdMode;
79 T m_tEpsilon;
80
81 T m_tPrevLoss;
82 T m_tBestLoss;
83 int64_t m_i64CurrentPatienceCount;
84 int64_t m_i64CurrentCoolDownCount;
85 };
86
87
88 typedef CLearningRateSchedulerReduceOnPlateau<float> CLearningRateSchedulerReduceOnPlateauF;
89 typedef CLearningRateSchedulerReduceOnPlateau<double> CLearningRateSchedulerReduceOnPlateauD;
90
91 typedef CLearningRateSchedulerReduceOnPlateau<float> CLRSReduceOnPlateauF;
92 typedef CLearningRateSchedulerReduceOnPlateau<double> CLRSReduceOnPlateauD;
93
94 template <typename T>
95 using CLRSReduceOnPlateau = CLearningRateSchedulerReduceOnPlateau<T>;
96
97 }
98}
99
100#endif
Definition AlgorithmAIBase.h:16
@ Assign
CGUIPropertyItemView3DFigure 의 값을 해당 도형으로 설정하는 함수
Definition DefinitionsGUIView3D.h:2732
@ Clear
도형 정리 메뉴
Definition DefinitionsGUI.h:2058