FLImaging 6.8.21.2
BackendAvgPool2D.h
1#pragma once
2
3#if _MSC_VER >= 1900 && defined(_M_X64)
4
5#include "BackendBase.h"
6
7namespace FLImaging
8{
9 namespace AI
10 {
11 template <typename T>
12 class FL_EXPORT CTensor;
13
14 template <typename T>
15 class FL_EXPORT CBackendAvgPool2D : public CBackendBase<T>
16 {
17 public:
18 CBackendAvgPool2D();
19 CBackendAvgPool2D(const CBackendAvgPool2D<T>& bf);
20 virtual ~CBackendAvgPool2D();
21
22 virtual const CResult SetParameters(int64_t _i64KernelX = 3, int64_t _i64KernelY = 3, int64_t _i64StrideX = 1, int64_t _i64StrideY = 1, int64_t _i64PaddingX = 0, int64_t _i64PaddingY = 0);
23
24 virtual const CResult Forward(const CTensor<T>* pTsrOperand, CTensor<T>* pTsrResult);
25 virtual const CResult Backward(const CTensor<T>* pTsrOperand, CTensor<T>* pTsrResult, std::vector<int64_t> vctOutputShapeAsc, bool bAddGradient, CTensor<T>* pTsrAddGradientTemp);
26
27 DeclareGetClassType();
28 SupportToDuplicateObjectWithoutCreateNewObject(CBackendAvgPool2D<T>, *this);
29
30 private:
31 int64_t m_i64KernelX;
32 int64_t m_i64KernelY;
33 int64_t m_i64StrideX;
34 int64_t m_i64StrideY;
35 int64_t m_i64PaddingX;
36 int64_t m_i64PaddingY;
37
38 };
39 }
40}
41
42#endif