FLImaging 6.5.16.1
LearningRateSchedulerCosineAnnealing.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 CLearningRateSchedulerCosineAnnealing : public CLearningRateSchedulerBase<T>
13 {
14 public:
15 CLearningRateSchedulerCosineAnnealing();
16 CLearningRateSchedulerCosineAnnealing(const CLearningRateSchedulerCosineAnnealing<T>& lrs);
17 CLearningRateSchedulerCosineAnnealing(const CLearningRateSchedulerCosineAnnealing<T>* pLrs);
18
19 virtual ~CLearningRateSchedulerCosineAnnealing();
20
21 virtual const CResult Assign(const CLearningRateSchedulerCosineAnnealing<T>& lrs);
22 virtual const CResult Assign(const CLearningRateSchedulerCosineAnnealing<T>* pLrs);
23
24 virtual const CResult Clear();
25
26 virtual const CResult SetHalfCycle(int64_t i64HalfCycle = 50);
27 virtual int64_t GetHalfCycle() const;
28
29 virtual const CResult SetMinLearningRate(T tMinLearningRate = 0);
30 virtual T GetMinLearningRate() const;
31
32 virtual const CResult Step(T tLoss = 0) override;
33
34
35 DeclareGetClassType();
36 SupportToDuplicateObject(CLearningRateSchedulerCosineAnnealing<T>, *this);
37
38 protected:
39 int64_t m_i64HalfCycle;
40 T m_tMinLearningRate;
41 };
42
43
44 typedef CLearningRateSchedulerCosineAnnealing<float> CLearningRateSchedulerCosineAnnealingF;
45 typedef CLearningRateSchedulerCosineAnnealing<double> CLearningRateSchedulerCosineAnnealingD;
46
47 typedef CLearningRateSchedulerCosineAnnealing<float> CLRSCosineAnnealingF;
48 typedef CLearningRateSchedulerCosineAnnealing<double> CLRSCosineAnnealingD;
49
50 template <typename T>
51 using CLRSCosineAnnealing = CLearningRateSchedulerCosineAnnealing<T>;
52
53 }
54}
55
56#endif
@ Assign
Set the value of CGUIPropertyItemView3DFigure to the specified figure.
@ Clear
Clear all the figure objects.