C++ API Reference for Intel® Data Analytics Acceleration Library 2020 Update 1

layer_backward_types.h
1 /* file: layer_backward_types.h */
2 /*******************************************************************************
3 * Copyright 2014-2020 Intel Corporation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *******************************************************************************/
17 
18 /*
19 //++
20 // Implementation of neural_networks Network layer.
21 //--
22 */
23 
24 #ifndef __LAYERS__BACKWARD__TYPES__H__
25 #define __LAYERS__BACKWARD__TYPES__H__
26 
27 #include "algorithms/algorithm.h"
28 #include "data_management/data/tensor.h"
29 #include "services/daal_defines.h"
30 #include "services/collection.h"
31 #include "data_management/data/data_collection.h"
32 #include "algorithms/neural_networks/layers/layer_types.h"
33 #include "algorithms/neural_networks/layers/layer_forward_types.h"
34 
35 namespace daal
36 {
37 namespace algorithms
38 {
42 namespace neural_networks
43 {
47 namespace layers
48 {
58 namespace backward
59 {
64 enum InputId
65 {
66  inputGradient,
67  lastInputId = inputGradient
68 };
69 
74 enum InputLayerDataId
75 {
76  inputFromForward = lastInputId + 1,
77  lastInputLayerDataId = inputFromForward
78 };
79 
84 enum ResultId
85 {
86  gradient,
87  weightDerivatives,
88  biasDerivatives,
89  lastResultId = biasDerivatives
90 };
91 
96 enum ResultLayerDataId
97 {
98  resultLayerData = lastResultId + 1,
99  lastResultLayerDataId = resultLayerData
100 };
101 
105 namespace interface1
106 {
112 class DAAL_EXPORT InputIface : public daal::algorithms::Input
113 {
114 public:
119  DAAL_DEPRECATED InputIface(size_t nElements) : daal::algorithms::Input(nElements) {}
123  DAAL_DEPRECATED InputIface(const InputIface& other);
127  virtual ~InputIface() {}
128 };
129 
135 class DAAL_EXPORT Input : public InputIface
136 {
137 public:
142  DAAL_DEPRECATED Input();
146  Input(const Input& other);
147 
151  virtual ~Input() {}
152 
159  DAAL_DEPRECATED data_management::TensorPtr get(InputId id) const;
160 
167  LayerDataPtr get(InputLayerDataId id) const;
168 
175  DAAL_DEPRECATED void set(InputId id, const data_management::TensorPtr &ptr);
176 
183  void set(InputLayerDataId id, const LayerDataPtr &ptr);
184 
193  DAAL_DEPRECATED_VIRTUAL virtual services::Status addInputGradient(const data_management::TensorPtr &igTensor, size_t index);
194 
202  virtual services::Status setInputFromForward(forward::ResultPtr result);
203 
212  services::Status check(const daal::algorithms::Parameter *par, int method) const DAAL_C11_OVERRIDE;
213 
219  DAAL_DEPRECATED_VIRTUAL virtual LayerInputLayout getLayout() const;
220 };
221 
227 class DAAL_EXPORT Result : public daal::algorithms::Result
228 {
229  DECLARE_SERIALIZABLE_IMPL();
230 public:
231  DAAL_CAST_OPERATOR(Result);
236  DAAL_DEPRECATED Result();
237 
241  virtual ~Result() {};
242 
252  template <typename algorithmFPType>
253  services::Status allocate(const daal::algorithms::Input *input, const daal::algorithms::Parameter *par, const int method)
254  {
255  return services::Status();
256  }
257 
264  data_management::TensorPtr get(ResultId id) const;
265 
272  DAAL_DEPRECATED void set(ResultId id, const data_management::TensorPtr &ptr);
273 
280  DAAL_DEPRECATED LayerDataPtr get(backward::ResultLayerDataId id) const;
281 
288  DAAL_DEPRECATED void set(ResultLayerDataId id, const LayerDataPtr &ptr);
289 
294  int getSerializationTag() const DAAL_C11_OVERRIDE { return SERIALIZATION_NEURAL_NETWORKS_LAYERS_BACKWARD_RESULT_ID; }
295 
305  services::Status check(const daal::algorithms::Input *input, const daal::algorithms::Parameter *parameter,
306  int method) const DAAL_C11_OVERRIDE;
307 
313  DAAL_DEPRECATED_VIRTUAL virtual LayerResultLayout getLayout() const;
314 
321  DAAL_DEPRECATED_VIRTUAL virtual data_management::TensorPtr getGradient(size_t index) const;
322 protected:
327  template<typename Archive, bool onDeserialize>
328  services::Status serialImpl(Archive *arch)
329  {
330  return daal::algorithms::Result::serialImpl<Archive, onDeserialize>(arch);
331  }
332 };
333 typedef services::SharedPtr<Result> ResultPtr;
334 } // namespace interface1
335 using interface1::InputIface;
336 using interface1::Input;
337 using interface1::Result;
338 using interface1::ResultPtr;
339 } // backward
340 
342 } // namespace layer
343 } // namespace neural_networks
344 } // namespace algorithm
345 } // namespace daal
346 #endif
daal::algorithms::neural_networks::layers::backward::interface1::InputIface
Abstract class that specifies interface of the input objects for the neural network layer algorithm...
Definition: layer_backward_types.h:112
daal::algorithms::neural_networks::layers::backward::interface1::Result::getSerializationTag
int getSerializationTag() const DAAL_C11_OVERRIDE
Definition: layer_backward_types.h:294
daal::algorithms::neural_networks::layers::backward::interface1::Result::allocate
services::Status allocate(const daal::algorithms::Input *input, const daal::algorithms::Parameter *par, const int method)
Definition: layer_backward_types.h:253
daal::algorithms::neural_networks::layers::backward::InputLayerDataId
InputLayerDataId
Definition: layer_backward_types.h:74
daal::algorithms::neural_networks::layers::backward::interface1::Input::~Input
virtual ~Input()
Definition: layer_backward_types.h:151
daal::algorithms::neural_networks::layers::backward::InputId
InputId
Definition: layer_backward_types.h:64
daal::algorithms::interface1::Result
Base class to represent final results of the computation. Algorithm-specific final results are repres...
Definition: algorithm_types.h:309
daal::algorithms::neural_networks::layers::backward::interface1::Result
Provides methods to access the result obtained with the compute() method of the layer algorithm...
Definition: layer_backward_types.h:227
daal::algorithms::neural_networks::layers::LayerInputLayout
LayerInputLayout
Definition: layer_types.h:59
daal::algorithms::neural_networks::layers::backward::ResultId
ResultId
Definition: layer_backward_types.h:84
daal_defines.h
daal::algorithms::interface1::Input
Base class to represent computation input arguments. Algorithm-specific input arguments are represent...
Definition: algorithm_types.h:193
daal::algorithms::neural_networks::layers::backward::interface1::InputIface::~InputIface
virtual ~InputIface()
Definition: layer_backward_types.h:127
daal::algorithms::neural_networks::layers::backward::biasDerivatives
Definition: layer_backward_types.h:88
daal::algorithms::neural_networks::layers::backward::ResultLayerDataId
ResultLayerDataId
Definition: layer_backward_types.h:96
daal::algorithms::neural_networks::layers::backward::inputFromForward
Definition: layer_backward_types.h:76
daal::algorithms::neural_networks::layers::backward::weightDerivatives
Definition: layer_backward_types.h:87
daal::algorithms::neural_networks::layers::backward::gradient
Definition: layer_backward_types.h:86
daal::algorithms::neural_networks::layers::backward::interface1::Result::~Result
virtual ~Result()
Definition: layer_backward_types.h:241
daal::algorithms::neural_networks::layers::backward::interface1::InputIface::InputIface
DAAL_DEPRECATED InputIface(size_t nElements)
Constructor.
Definition: layer_backward_types.h:119
daal::algorithms::neural_networks::layers::backward::interface1::Input
Input parameters for the layer algorithm
Definition: layer_backward_types.h:135
daal::algorithms::neural_networks::layers::LayerResultLayout
LayerResultLayout
Definition: layer_types.h:70
daal::algorithms::neural_networks::layers::backward::inputGradient
Definition: layer_backward_types.h:66

For more complete information about compiler optimizations, see our Optimization Notice.