FLImaging 6.5.16.1
InternalOptimizerAdamGradientDescent.h
1#pragma once
2
3#if _MSC_VER >= 1900 && defined(_M_X64)
4
5#include "InternalOptimizerRMSPropGradientDescent.h"
6#include "InternalOptimizerMomentumGradientDescent.h"
7
8namespace FLImaging
9{
10 namespace AI
11 {
12 template <typename T>
13 class FL_EXPORT CInternalOptimizerAdamGradientDescent : public CInternalOptimizerMomentumGradientDescent<T>, public CInternalOptimizerRMSPropGradientDescent<T>
14 {
15 public:
16 CInternalOptimizerAdamGradientDescent();
17 CInternalOptimizerAdamGradientDescent(const CInternalOptimizerAdamGradientDescent<T>& ob);
18
19 virtual ~CInternalOptimizerAdamGradientDescent();
20
21 virtual const CResult Assign(const CInternalOptimizerAdamGradientDescent<T>& ob);
22 virtual const CResult Assign(const CInternalOptimizerAdamGradientDescent<T>* pOb);
23
24 virtual CInternalOptimizerBase<T>* Clone() const override;
25
26 virtual const CResult Initialize() override;
27
28 virtual const CResult SetBeta1(T tBeta1);
29 virtual T GetBeta1() const;
30
31 virtual const CResult SetBeta2(T tBeta2);
32 virtual T GetBeta2() const;
33
34 virtual const CResult UpdateWeights() override;
35
36 virtual int64_t GetRequiredDedicatedMemory(int64_t i64BatchSize) const override;
37
38
39 DeclareGetClassType();
40
41 protected:
42
43 T& m_tBeta1;
44 T& m_tBeta2;
45 T m_tCount;
46
47 private:
48
49 using CInternalOptimizerMomentumGradientDescent<T>::GetAlpha;
50 using CInternalOptimizerMomentumGradientDescent<T>::SetAlpha;
51
52 using CInternalOptimizerRMSPropGradientDescent<T>::GetRho;
53 using CInternalOptimizerRMSPropGradientDescent<T>::SetRho;
54 };
55
56
57 typedef CInternalOptimizerAdamGradientDescent<float> CInternalOptimizerAdamGradientDescentF;
58 typedef CInternalOptimizerAdamGradientDescent<double> CInternalOptimizerAdamGradientDescentD;
59
60 typedef CInternalOptimizerAdamGradientDescent<float> CInternalOptimizerAdamGDF;
61 typedef CInternalOptimizerAdamGradientDescent<double> CInternalOptimizerAdamGDD;
62
63 template <typename T>
64 using CInternalOptimizerAdamGD = CInternalOptimizerAdamGradientDescent<T>;
65 }
66}
67
68#endif
@ Assign
Set the value of CGUIPropertyItemView3DFigure to the specified figure.