FLImaging 6.6.27.1
ComputationalGraphAdaptiveAvgPool2D.h
1#pragma once
2
3#if _MSC_VER >= 1900 && defined(_M_X64)
4
5#include "ComputationalGraph.h"
6#include "BackendAdaptiveAvgPool2D.h"
7
8#include <vector>
9
10namespace FLImaging
11{
12 namespace AI
13 {
14 template <typename T>
15 class FL_EXPORT CComputationalGraphAdaptiveAvgPool2D : public CComputationalGraph<T>
16 {
17 private:
18 CComputationalGraphAdaptiveAvgPool2D();
19
20 protected:
21 CComputationalGraphAdaptiveAvgPool2D(const CComputationalGraphAdaptiveAvgPool2D<T>& cg);
22
23 public:
24
25 //0인 경우 Input Size
26 CComputationalGraphAdaptiveAvgPool2D(const CComputationalBase<T>& cbOperand, std::vector<int64_t> vctI64OutputSize = { 0,0 });
27 CComputationalGraphAdaptiveAvgPool2D(const CComputationalBase<T>& cbOperand, int64_t i64OutputSize);
28 CComputationalGraphAdaptiveAvgPool2D(const CComputationalBase<T>& cbOperand, int64_t i64OutputX, int64_t i64OutputY);
29 virtual ~CComputationalGraphAdaptiveAvgPool2D();
30
31 virtual CTensor<T>& Forward() override;
32 virtual CTensor<T>* Backward() override;
33 virtual CComputationalBase<T>* Clone() const override;
34
35 virtual const CResult GetBinaryData(Base::CFLData& fldBinary, bool bSuperClass = false, int32_t i32Version = -1, bool bDumpMode = false) const override;
36 virtual const CResult GetBinaryData(Base::CFLData* pFldBinary, bool bSuperClass = false, int32_t i32Version = -1, bool bDumpMode = false) const override;
37
38 virtual const CResult SetBinaryData(const Base::CFLData& fldBinary, int64_t* pI64Offset = nullptr) override;
39 virtual const CResult SetBinaryData(const Base::CFLData* pFldBinary, int64_t* pI64Offset = nullptr) override;
40
41 virtual const std::vector<int64_t>& GetEstimatedShape(bool bRecursive = true) const override;
42
43 virtual const CResult PrintNodeParamInfo() const override;
44 virtual int64_t GetRequiredDedicatedMemory(bool bTraining = false, bool bRecursively = true, int64_t i64BatchSize = 1) const override;
45
46
47 DeclareGetClassType();
48 SupportToDuplicateObjectWithoutCreateNewObject(CComputationalGraphAdaptiveAvgPool2D, *this);
49
50 protected:
51 int64_t m_i64OutputX;
52 int64_t m_i64OutputY;
53
54 CBackendAdaptiveAvgPool2D<T> m_backendAdaptive;
55
56 protected:
57
58 public:
59 DeclareGetSignletonObject(CComputationalGraphAdaptiveAvgPool2D);
60 };
61
62 #define CCGFAdaptiveAvgPool2D(...) (*(new CComputationalGraphAdaptiveAvgPool2D<float>(__VA_ARGS__)))
63 #define CCGDAdaptiveAvgPool2D(...) (*(new CComputationalGraphAdaptiveAvgPool2D<double>(__VA_ARGS__)))
64
65 #define CCGTAdaptiveAvgPool2D(T, ...) (*(new CComputationalGraphAdaptiveAvgPool2D<T>(__VA_ARGS__)))
66 }
67}
68
69#endif
Definition AlgorithmAIBase.h:16