FLImaging 6.5.16.1
BackendEvaluatorBase.h
1#pragma once
2
3#if _MSC_VER >= 1900 && defined(_M_X64)
4
5#include "DefinitionsAI.h"
6#include "BackendBase.h"
7#include "Tensor.h"
8
9namespace FLImaging
10{
11 namespace AI
12 {
13 template <typename T>
14 class CComputationalGraphPlaceholder;
15
16 template <typename T>
17 class CEvaluator;
18
19 template <typename T>
20 class CComputationalGraphUtilities;
21
22 template <typename T>
23 class CBackendEvaluatorForObjectDetection;
24
25 template <typename T>
26 class CBackendEvaluatorForInstanceSegmentation;
27
28 template <typename T>
29 class FL_EXPORT CBackendEvaluatorBase : public CBackendBase<T>
30 {
31 public:
32 CBackendEvaluatorBase();
33 CBackendEvaluatorBase(CEvaluator<T>* pEvaluator);
34 CBackendEvaluatorBase(CBackendEvaluatorBase<T>& evaluator);
35 CBackendEvaluatorBase(CBackendEvaluatorBase<T>* pEvaluator);
36 virtual ~CBackendEvaluatorBase();
37
38 virtual const CResult Clear() override;
39
40 virtual const CResult Assign(CBackendEvaluatorBase<T>& evaluator);
41 virtual const CResult Assign(CBackendEvaluatorBase<T>* pEvaluator);
42
43 virtual const CResult Initialize();
44
45 virtual const CResult Evaluate(int32_t* pI32IterationFeedback = nullptr, bool* pBStopImmediatedly = nullptr, std::vector<bool>* pVctEvaluatedIndex = nullptr);
46
47 virtual const CResult SetEvaluatorIndex(int64_t i64EvaluatorIndex);
48 virtual int64_t GetEvaluatorIndex() const;
49
50 virtual const CResult SetMemoryLimitRatio(double f64MemoryLimitRatio);
51 virtual double GetMemoryLimitRatio() const;
52
53 virtual const CTensor<T>* GetResult() const;
54
55 virtual const CResult SetProcessingUnit(const Base::CProcessingUnitBase& pub) override;
56 virtual const CResult SetProcessingUnit(const Base::CProcessingUnitBase* pPub) override;
57
58 DeclareGetClassType();
59 SupportToDuplicateObject(CBackendEvaluatorBase<T>);
60
61 protected:
62 virtual void Throw(const CResult& res, const wchar_t* pWcsExtraMessage = nullptr) const override;
63 protected:
64 virtual const CResult InitializeMiniBatch();
65 virtual const CResult MakeBatchTensor(bool bDifferent);
66 virtual const CResult LoadTensor(int64_t i64IterationIndex = 0);
67 virtual const CResult InitializeCurrentIteration(int64_t i64IterationIndex = 0);
68 protected:
69 std::vector<CTensor<T>*>& m_vctOrgTensors;
70 std::vector<CTensor<T>*>& m_vctBatchTensors;
71 std::vector<CComputationalGraphPlaceholder<T>*>& m_vctPlaceholders;
72
73 CEvaluator<T>* m_pEvaluator;
74 CTensor<T> m_tsrResult;
75
76 int64_t m_i64EvaluatorIndex;
77
78 int64_t m_i64ActualMiniBatchSize;
79 int64_t m_i64AvailableMiniBatchSize;
80 int64_t m_i64TotalIteration;
81 int64_t m_i64TotalBatchSize;
82 int64_t m_i64CurrentIteration;
83
84 int64_t m_i64PrevInputSize;
85 int64_t m_i64PrevPlaceholderSize;
86 std::vector<std::tuple<ENodeType, EDataType, EValueAttribute, ENodeOperator, std::vector<int64_t>>>& m_vctPrevInputInfo;
87 std::vector<std::vector<int64_t>>& m_vctPrevPlaceholderShape;
88
89 bool m_bDifferent;
90
91 std::vector<CTensor<T>*>& m_vctDelayedLoader;
92 volatile int64_t m_i64LoadCount;
93 volatile bool m_bEvaluationTerminate;
94 volatile bool m_bLoadNextIteration;
95 volatile bool m_bEndSubdivision;
96 CResult m_resLoadTensorResult;
97
98 double m_f64MemoryLimitRatio;
99 protected:
100 template <typename T>
101 friend class CComputationalGraphUtilities;
102
103 template <typename T>
104 friend class CEvaluator;
105
106 template <typename T>
107 friend class CBackendEvaluatorForObjectDetection;
108
109 template <typename T>
110 friend class CBackendEvaluatorForInstanceSegmentation;
111 };
112 }
113}
114
115#endif
@ Assign
Set the value of CGUIPropertyItemView3DFigure to the specified figure.
@ Clear
Clear all the figure objects.