FLImaging 6.5.16.1
ValidatorBase.h
1#pragma once
2
3#if _MSC_VER >= 1900 && defined(_M_X64)
4
5#include <atomic>
6
7namespace FLImaging
8{
9 namespace AI
10 {
11 template <typename T>
12 class CComputationalGraph;
13
14 template<typename T>
15 class CInternalOptimizerBase;
16
17 template<typename T>
18 class CComputationalGraphPlaceholder;
19
20 template<typename T>
21 class CTensor;
22
23 template <typename T>
24 class FL_EXPORT CValidatorBase : public Base::CFLBase
25 {
26
27 public:
28 CValidatorBase();
29 CValidatorBase(const CValidatorBase<T>& validator);
30 CValidatorBase(const CValidatorBase<T>* pValidator);
31 virtual ~CValidatorBase();
32
33 virtual const CResult Assign(const CValidatorBase<T>& validator);
34 virtual const CResult Assign(const CValidatorBase<T>* pValidator);
35
36 virtual const CResult Clear();
37
38 virtual const CResult Initialize();
39
40 virtual const CResult SetOptimizer(const CInternalOptimizerBase<T>* pOptimizer);
41 virtual const CInternalOptimizerBase<T>* GetOptimizer() const;
42
43 virtual const CResult SetValidationLabels(CTensor<T>* pTsrValidationLabels);
44 virtual const CResult SetValidationLabels(const std::vector<CTensor<T>*>& vctValidationLabels);
45 virtual const CResult SetValidationLabels(const std::vector<CTensor<T>*>* pVctValidationLabels);
46 virtual const CTensor<T>* GetValidationLabels(int64_t i64Index = 0) const;
47 virtual const CResult GetValidationLabels(std::vector<CTensor<T>*>& vctValidationLabels) const;
48 virtual int64_t GetValidationLabelCount() const;
49
50 virtual const CResult SetValidationFunctions(const CComputationalGraph<T>* pCgLabelLayer, const CComputationalGraph<T>* pCgValidationLayer);
51 virtual const CResult GetValidationFunctions(CComputationalGraph<T>** ppCgLabelLayer, CComputationalGraph<T>** ppCgValidationLayer) const;
52
53 virtual T Validate(int32_t* pI32IterationFeedback = nullptr) = 0;
54
55 DeclareGetClassType();
56 SupportToDuplicateAbstractObject(CValidatorBase<T>);
57
58 protected:
59 virtual void Throw(const CResult& res, const wchar_t* pWcsExtraMessage = nullptr) const override;
60 virtual const CResult InitializeMiniBatch();
61 virtual const CResult InitializeCurrentIteration(int64_t i64IterationIndex = 0);
62 virtual const CResult LoadTensor(int64_t i64IterationIndex = 0);
63
64 protected:
65 CComputationalGraph<T>* m_pCgLabelLayer;
66 CComputationalGraph<T>* m_pCgValidationLayer;
67 CInternalOptimizerBase<T>* m_pOptimizer;
68 std::vector<CTensor<T>*>& m_vctValidationLabels;
69
70 std::vector<CTensor<T>*>& m_vctOrgTensors;
71 std::vector<CTensor<T>*>& m_vctBatchTensors;
72 std::vector<CComputationalGraphPlaceholder<T>*>& m_vctPlaceholders;
73
74 bool m_bDifferent;
75 int64_t m_i64InitialBatch;
76
77 std::vector<CTensor<T>*>& m_vctDelayedLoader;
78
79 volatile int64_t m_i64LoadCount;
80 volatile bool m_bValidationTerminate;
81 volatile bool m_bLoadNextIteration;
82 volatile bool m_bEndSubdivision;
83 CResult m_resLoadTensorResult;
84 private:
85 template<typename T>
86 friend class COptimizer;
87
88 template<typename T>
89 friend class CInternalOptimizerBase;
90
91 template<typename T>
92 friend class COptimizerForStringBasedOCR;
93 };
94
95
96 typedef CValidatorBase<float> CValidatorBaseF;
97 typedef CValidatorBase<double> CValidatorBaseD;
98 }
99}
100
101#endif
@ Assign
Set the value of CGUIPropertyItemView3DFigure to the specified figure.
@ Clear
Clear all the figure objects.