FLImaging 6.5.16.1
LearningRateSchedulerLambda.h
1#pragma once
2
3#if _MSC_VER >= 1900 && defined(_M_X64)
4
5#include "LearningRateSchedulerBase.h"
6
7#include <functional>
8
9namespace FLImaging
10{
11 namespace AI
12 {
13 template <typename T>
14 class FL_EXPORT CLearningRateSchedulerLambda : public CLearningRateSchedulerBase<T>
15 {
16 public:
17 enum EOperationMode
18 {
19 EOperationMode_Normal = 0,
20 EOperationMode_Accumulate
21 };
22
23 CLearningRateSchedulerLambda();
24 CLearningRateSchedulerLambda(const CLearningRateSchedulerLambda<T>& lrs);
25 CLearningRateSchedulerLambda(const CLearningRateSchedulerLambda<T>* pLrs);
26
27 virtual ~CLearningRateSchedulerLambda();
28
29 virtual const CResult Assign(const CLearningRateSchedulerLambda<T>& lrs);
30 virtual const CResult Assign(const CLearningRateSchedulerLambda<T>* pLrs);
31
32 virtual const CResult Clear();
33 virtual const CResult Initialize() override;
34
35 virtual const CResult SetLambda(std::function<T(T, int64_t)>& funcLambda);
36 virtual const std::function<T(T, int64_t)>* GetLambda() const;
37
38 virtual const CResult SetOperationMode(EOperationMode eOperationMode = EOperationMode_Normal);
39 virtual EOperationMode GetOperationMode() const;
40
41 virtual const CResult Step(T tLoss = 0) override;
42
43
44 DeclareGetClassType();
45 SupportToDuplicateObject(CLearningRateSchedulerLambda<T>, *this);
46
47 protected:
48 std::function<T(T, int64_t)>* m_pFuncLambda; // lr_new = func(lr_org, step)
49 EOperationMode m_eOperationMode;
50 };
51
52
53 typedef CLearningRateSchedulerLambda<float> CLearningRateSchedulerLambdaF;
54 typedef CLearningRateSchedulerLambda<double> CLearningRateSchedulerLambdaD;
55
56 typedef CLearningRateSchedulerLambda<float> CLRSLambdaF;
57 typedef CLearningRateSchedulerLambda<double> CLRSLambdaD;
58
59 template <typename T>
60 using CLRSLambda = CLearningRateSchedulerLambda<T>;
61
62 }
63}
64
65#endif
@ Assign
Set the value of CGUIPropertyItemView3DFigure to the specified figure.
@ Clear
Clear all the figure objects.