18 #ifndef TMVA_DNN_CNN_DESCRIPTORS
19 #define TMVA_DNN_CNN_DESCRIPTORS
29 virtual ~TDescriptors() {}
33 template <
typename Layer_t>
34 struct TDNNGenDescriptors :
public TMVA::DNN::TDescriptors {
35 using HelperDescriptor_t =
typename Layer_t::HelperDescriptor_t;
37 HelperDescriptor_t HelperDescriptor;
47 template <
typename Layer_t>
48 struct TCNNDescriptors :
public TMVA::DNN::TDescriptors {
49 using LayerDescriptor_t =
typename Layer_t::LayerDescriptor_t;
50 using HelperDescriptor_t =
typename Layer_t::HelperDescriptor_t;
51 using WeightsDescriptor_t =
typename Layer_t::WeightsDescriptor_t;
53 LayerDescriptor_t LayerDescriptor;
54 HelperDescriptor_t HelperDescriptor;
55 WeightsDescriptor_t WeightsDescriptor;
58 template <
typename Layer_t>
59 struct TCNNWorkspace :
public TMVA::DNN::TWorkspace {
60 using AlgorithmForward_t =
typename Layer_t::AlgorithmForward_t;
61 using AlgorithmBackward_t =
typename Layer_t::AlgorithmBackward_t;
62 using AlgorithmHelper_t =
typename Layer_t::AlgorithmHelper_t;
64 using ReduceTensorDescriptor_t =
typename Layer_t::ReduceTensorDescriptor_t;
66 using AlgorithmDataType_t =
typename Layer_t::AlgorithmDataType_t;
68 AlgorithmForward_t AlgorithmForward;
69 AlgorithmBackward_t AlgorithmBackward;
70 AlgorithmHelper_t HelperAlgorithm;
72 AlgorithmDataType_t DataType;
74 size_t *ForwardWorkspace;
75 size_t *BackwardWorkspace;
76 size_t *HelperWorkspace;
78 void *fReductionWorkspace =
nullptr;
80 size_t ForwardWorkspaceSize;
81 size_t BackwardWorkspaceSize;
82 size_t HelperWorkspaceSize;
83 size_t fReductionWorkspaceSize = 0;
85 ReduceTensorDescriptor_t fReduceTensorDesc;