3#if _MSC_VER >= 1900 && defined(_M_X64)
5#include "BackendBase.h"
12 class FL_EXPORT CTensor;
15 class FL_EXPORT CBackendBase;
18 class FL_EXPORT CBackendLayerNorm :
public CBackendBase<T>
23 CBackendLayerNorm(
const CBackendLayerNorm<T>& bbn);
24 virtual ~CBackendLayerNorm();
26 virtual const CResult SetEpsilon(T tEpsilon);
27 virtual const CResult UseAffine(
bool bAffine);
28 virtual const CResult UseBias(
bool bBias);
29 virtual const CResult SetNormalizeShape(
const std::vector<int64_t>& vtNormalizeShape);
30 virtual T GetEpsilon();
31 virtual bool IsAffineUsed();
32 virtual bool IsBiasUsed();
34 virtual const CResult Forward(CTensor<T>* pTsrX, CTensor<T>* pTsrWeight, CTensor<T>* pTsrBias, CTensor<T>* pTsrY, CTensor<T>* pTsrVarBuffer, CTensor<T>* pTsrMeanBuffer,
bool bTrainingModeEnabled);
35 virtual const CResult Derivative(CTensor<T>* pTsrX, CTensor<T>* pTsrWeight, CTensor<T>* pTsrBias, CTensor<T>* pTsrVarBuffer, CTensor<T>* pTsrMeanBuffer, CTensor<T>* pTsrDy, CTensor<T>* pTsrDx, CTensor<T>* pTsrDw, CTensor<T>* pTsrDb,
bool bTrainingModeEnabled,
bool bAddGradient,
bool bWeightAddGradient,
bool bBiasAddGradient, CTensor<T>* pTsrAddGradientTemp =
nullptr, CTensor<T>* pTsrWeightAddGradientTemp =
nullptr, CTensor<T>* pTsrBiasAddGradientTemp =
nullptr);
38 virtual const CResult LayerNorm_CUDA(CTensor<T>* pTsrX, CTensor<T>* pTsrWeight, CTensor<T>* pTsrBias, CTensor<T>* pTsrY, CTensor<T>* pTsrVarBuffer, CTensor<T>* pTsrMeanBuffer,
bool bTrainingModeEnabled);
39 virtual const CResult LayerNorm_CPU(CTensor<T>* pTsrX, CTensor<T>* pTsrWeight, CTensor<T>* pTsrBias, CTensor<T>* pTsrY, CTensor<T>* pTsrVarBuffer, CTensor<T>* pTsrMeanBuffer,
bool bTrainingModeEnabled);
40 virtual const CResult Derivative_CUDA(CTensor<T>* pTsrX, CTensor<T>* pTsrWeight, CTensor<T>* pTsrBias,CTensor<T>* pTsrVarBuffer, CTensor<T>* pTsrMeanBuffer, CTensor<T>* pTsrDy, CTensor<T>* pTsrDx, CTensor<T>* pTsrDw, CTensor<T>* pTsrDb,
bool bTrainingModeEnabled,
bool bAddGradient);
41 virtual const CResult Derivative_CPU(CTensor<T>* pTsrX, CTensor<T>* pTsrWeight, CTensor<T>* pTsrBias, CTensor<T>* pTsrVarBuffer, CTensor<T>* pTsrMeanBuffer, CTensor<T>* pTsrDy, CTensor<T>* pTsrDx, CTensor<T>* pTsrDw, CTensor<T>* pTsrDb,
bool bTrainingModeEnabled);
43 DeclareGetClassType();
44 SupportToDuplicateObjectWithoutCreateNewObject(CBackendLayerNorm<T>, *
this);
50 std::vector<int64_t>& m_vtNormalizeShape;