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

layer_backward.h
1 /* file: layer_backward.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 network layer.
21 //--
22 */
23 
24 #ifndef __LAYER_BACKWARD_H__
25 #define __LAYER_BACKWARD_H__
26 
27 #include "algorithms/algorithm.h"
28 #include "data_management/data/tensor.h"
29 #include "services/daal_defines.h"
30 #include "algorithms/neural_networks/layers/layer_backward_types.h"
31 
32 namespace daal
33 {
34 namespace algorithms
35 {
39 namespace neural_networks
40 {
44 namespace layers
45 {
49 namespace backward
50 {
51 namespace interface1
52 {
62 class LayerIface : public daal::algorithms::Analysis<batch>
63 {
64 public:
65  typedef algorithms::neural_networks::layers::backward::Input InputType;
66  typedef algorithms::neural_networks::layers::Parameter ParameterType;
67  typedef algorithms::neural_networks::layers::backward::Result ResultType;
68 
72  virtual ~LayerIface() {};
73 
79  virtual backward::ResultPtr getLayerResult() = 0;
80 
86  virtual InputType *getLayerInput() = 0;
87 
93  virtual ParameterType *getLayerParameter() = 0;
94 
101  services::SharedPtr<daal::algorithms::neural_networks::layers::backward::interface1::LayerIface> clone() const
102  {
103  return services::SharedPtr<LayerIface>(cloneImpl());
104  }
105 
110  virtual services::Status allocateResult() = 0;
111 
122  virtual services::Status addInput(backward::ResultPtr result, size_t resultIndex, size_t inputIndex) = 0;
123 
124 protected:
128  virtual LayerIface *cloneImpl() const = 0;
129 };
130 
131 typedef services::SharedPtr<LayerIface> LayerIfacePtr;
143 class LayerIfaceImpl : public LayerIface
144 {
145 public:
146  typedef LayerIface super;
147 
148  typedef super::InputType InputType;
149  typedef super::ParameterType ParameterType;
150  typedef super::ResultType ResultType;
151 
155  virtual ~LayerIfaceImpl() {};
156 
161  DAAL_DEPRECATED_VIRTUAL virtual services::Status addInput(backward::ResultPtr result, size_t resultIndex, size_t inputIndex) DAAL_C11_OVERRIDE
162  {
163  return getLayerInput()->addInputGradient(result->getGradient(resultIndex), inputIndex);
164  }
165 };
166 
167 typedef services::SharedPtr<LayerIfaceImpl> LayerIfaceImplPtr;
169 } // namespace interface1
170 
171 using interface1::LayerIface;
172 using interface1::LayerIfacePtr;
173 using interface1::LayerIfaceImpl;
174 using interface1::LayerIfaceImplPtr;
175 } // namespace backward
176 } // namespace layers
177 } // namespace neural_networks
178 } // namespace algorithms
179 } // namespace daal
180 #endif
daal::algorithms::neural_networks::layers::backward::interface1::LayerIface::getLayerInput
virtual InputType * getLayerInput()=0
daal::algorithms::neural_networks::layers::backward::interface1::LayerIface::allocateResult
virtual services::Status allocateResult()=0
daal::algorithms::neural_networks::layers::backward::interface1::LayerIfaceImpl::~LayerIfaceImpl
virtual ~LayerIfaceImpl()
Definition: layer_backward.h:155
daal::algorithms::neural_networks::layers::backward::interface1::LayerIface::clone
services::SharedPtr< daal::algorithms::neural_networks::layers::backward::interface1::LayerIface > clone() const
Definition: layer_backward.h:101
daal::algorithms::neural_networks::layers::backward::interface1::LayerIfaceImpl
Implements the abstract interface LayerIface. LayerIfaceImpl is, in turn, the base class for the clas...
Definition: layer_backward.h:143
daal::algorithms::neural_networks::layers::backward::interface1::LayerIface::cloneImpl
virtual LayerIface * cloneImpl() const =0
daal::algorithms::neural_networks::layers::interface1::LayerIfacePtr
services::SharedPtr< LayerIface > LayerIfacePtr
Definition: layer.h:67
daal_defines.h
daal::algorithms::neural_networks::layers::backward::interface1::LayerIface
Abstract class which defines interface for the layer.
Definition: layer_backward.h:62
daal::algorithms::neural_networks::layers::backward::interface1::LayerIface::~LayerIface
virtual ~LayerIface()
Definition: layer_backward.h:72
daal::algorithms::neural_networks::layers::backward::interface1::LayerIface::getLayerResult
virtual backward::ResultPtr getLayerResult()=0
daal::algorithms::neural_networks::layers::backward::interface1::LayerIfaceImpl::addInput
virtual DAAL_DEPRECATED_VIRTUAL services::Status addInput(backward::ResultPtr result, size_t resultIndex, size_t inputIndex) DAAL_C11_OVERRIDE
Definition: layer_backward.h:161
daal::algorithms::Analysis
Provides methods for execution of operations over data, such as computation of Summary Statistics est...
Definition: analysis.h:70
daal::algorithms::neural_networks::layers::backward::interface1::LayerIface::addInput
virtual services::Status addInput(backward::ResultPtr result, size_t resultIndex, size_t inputIndex)=0
daal::algorithms::neural_networks::layers::interface1::LayerIface
Abstract class that specifies the interface of layer.
Definition: layer.h:60
daal::algorithms::neural_networks::layers::backward::interface1::LayerIface::getLayerParameter
virtual ParameterType * getLayerParameter()=0

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