48 #ifndef __LAYER_FORWARD_H__ 49 #define __LAYER_FORWARD_H__ 51 #include "algorithms/algorithm.h" 52 #include "data_management/data/tensor.h" 53 #include "services/daal_defines.h" 54 #include "algorithms/neural_networks/layers/layer_forward_types.h" 55 #include "layer_forward_container_base.h" 64 namespace neural_networks
86 class LayerIface :
public daal::algorithms::Analysis<batch>
89 typedef algorithms::neural_networks::layers::forward::Input InputType;
90 typedef algorithms::neural_networks::layers::Parameter ParameterType;
91 typedef algorithms::neural_networks::layers::forward::Result ResultType;
93 virtual ~LayerIface() {};
99 virtual forward::ResultPtr getLayerResult() = 0;
105 virtual InputType *getLayerInput() = 0;
111 virtual ParameterType *getLayerParameter() = 0;
118 daal::algorithms::neural_networks::layers::forward::LayerIfacePtr clone()
const 120 return LayerIfacePtr(cloneImpl());
126 virtual services::Status allocateResult() = 0;
131 virtual services::Status allocateInput() = 0;
136 virtual services::Status initializeInput() = 0;
146 virtual services::Status addInput(forward::ResultPtr result,
size_t resultIndex,
size_t inputIndex) = 0;
152 virtual layers::forward::LayerIfacePtr getLayerForPrediction()
const = 0;
155 virtual LayerIface *cloneImpl()
const = 0;
158 typedef services::SharedPtr<LayerIface> LayerIfacePtr;
169 class LayerIfaceImpl :
public LayerIface
172 typedef LayerIface super;
174 typedef super::InputType InputType;
175 typedef super::ParameterType ParameterType;
176 typedef super::ResultType ResultType;
178 virtual ~LayerIfaceImpl() {};
183 virtual services::Status allocateInput() DAAL_C11_OVERRIDE
185 this->_ac->setArguments(this->_in, this->_res, this->_par);
186 LayerContainerIfaceImpl *ac =
dynamic_cast<LayerContainerIfaceImpl *
>(_ac);
187 return ac->allocateInput();
193 virtual services::Status initializeInput() DAAL_C11_OVERRIDE
195 this->_ac->setArguments(this->_in, this->_res, this->_par);
197 LayerContainerIfaceImpl *ac =
dynamic_cast<LayerContainerIfaceImpl *
>(_ac);
198 return ac->initializeInput();
204 virtual services::Status addInput(forward::ResultPtr result,
size_t resultIndex,
size_t inputIndex) DAAL_C11_OVERRIDE
206 return getLayerInput()->addData(result->getValue(resultIndex), inputIndex);
213 virtual layers::forward::LayerIfacePtr getLayerForPrediction() const DAAL_C11_OVERRIDE
215 return this->clone();
219 virtual void setParameter() DAAL_C11_OVERRIDE
221 if(this->getLayerParameter())
223 this->getLayerParameter()->weightsInitializer->getParameter()->layer = services::SharedPtr<LayerIface>(
this, services::EmptyDeleter());
224 this->getLayerParameter()->biasesInitializer->getParameter()->layer = services::SharedPtr<LayerIface>(
this, services::EmptyDeleter());
229 typedef services::SharedPtr<LayerIfaceImpl> LayerIfaceImplPtr;
232 using interface1::LayerIface;
233 using interface1::LayerIfacePtr;
234 using interface1::LayerIfaceImpl;
235 using interface1::LayerIfaceImplPtr;
daal::algorithms::neural_networks::layers::forward::interface1::LayerIface::getLayerForPrediction
virtual layers::forward::LayerIfacePtr getLayerForPrediction() const =0
daal::algorithms::neural_networks::layers::forward::interface1::LayerIfaceImpl::initializeInput
virtual services::Status initializeInput() DAAL_C11_OVERRIDE
Definition: layer_forward.h:193
daal::services::interface1::Status
Class that holds the results of API calls. In case of API routine failure it contains the list of err...
Definition: error_handling.h:491
daal
Definition: algorithm_base_common.h:57
daal::algorithms::neural_networks::layers::forward::interface1::LayerIfaceImpl::addInput
virtual services::Status addInput(forward::ResultPtr result, size_t resultIndex, size_t inputIndex) DAAL_C11_OVERRIDE
Definition: layer_forward.h:204
daal::algorithms::neural_networks::layers::forward::interface1::LayerIface::getLayerResult
virtual forward::ResultPtr getLayerResult()=0
daal::algorithms::neural_networks::layers::forward::interface1::LayerContainerIfaceImpl::initializeInput
virtual services::Status initializeInput()
daal::algorithms::neural_networks::layers::interface1::Parameter
Definition: layer_types.h:110
daal::algorithms::neural_networks::layers::forward::interface1::LayerIface
Abstract class which defines interface for the layer.
Definition: layer_forward.h:86
daal::algorithms::neural_networks::layers::forward::interface1::LayerIfaceImpl::allocateInput
virtual services::Status allocateInput() DAAL_C11_OVERRIDE
Definition: layer_forward.h:183
daal::algorithms::neural_networks::layers::forward::interface1::LayerIface::addInput
virtual services::Status addInput(forward::ResultPtr result, size_t resultIndex, size_t inputIndex)=0
daal::algorithms::neural_networks::layers::forward::interface1::LayerIface::getLayerParameter
virtual ParameterType * getLayerParameter()=0
daal::algorithms::neural_networks::layers::forward::interface1::LayerIfaceImpl::getLayerForPrediction
virtual layers::forward::LayerIfacePtr getLayerForPrediction() const DAAL_C11_OVERRIDE
Definition: layer_forward.h:213
daal::services::interface1::SharedPtr
Shared pointer that retains shared ownership of an object through a pointer. Several SharedPtr object...
Definition: daal_shared_ptr.h:187
daal::algorithms::neural_networks::layers::interface1::Parameter::weightsInitializer
initializers::InitializerIfacePtr weightsInitializer
Definition: layer_types.h:117
daal::algorithms::neural_networks::layers::forward::interface1::Result
Provides methods to access the result obtained with the compute() method of the layer algorithm...
Definition: layer_forward_types.h:241
daal::algorithms::neural_networks::layers::forward::interface1::LayerIface::clone
daal::algorithms::neural_networks::layers::forward::LayerIfacePtr clone() const
Definition: layer_forward.h:118
daal::algorithms::neural_networks::layers::forward::interface1::LayerIface::getLayerInput
virtual InputType * getLayerInput()=0
daal::algorithms::neural_networks::layers::forward::interface1::LayerIface::initializeInput
virtual services::Status initializeInput()=0
daal::algorithms::neural_networks::layers::forward::interface1::LayerIface::allocateInput
virtual services::Status allocateInput()=0
daal::algorithms::Analysis
Provides methods for execution of operations over data, such as computation of Summary Statistics est...
Definition: analysis.h:94
daal::algorithms::neural_networks::layers::interface1::Parameter::biasesInitializer
initializers::InitializerIfacePtr biasesInitializer
Definition: layer_types.h:119
daal::algorithms::neural_networks::layers::forward::interface1::LayerIface::allocateResult
virtual services::Status allocateResult()=0
daal::algorithms::neural_networks::layers::forward::interface1::LayerContainerIfaceImpl
Provides methods of base container for forward layers. This class is associated with the daal::algori...
Definition: layer_forward_container_base.h:86
daal::services::interface1::EmptyDeleter
Implementation of DeleterIface without pointer destroying.
Definition: daal_shared_ptr.h:125
daal::algorithms::neural_networks::layers::forward::interface1::LayerContainerIfaceImpl::allocateInput
virtual services::Status allocateInput()
daal::algorithms::neural_networks::layers::forward::interface1::LayerIfaceImpl
Implements the abstract interface LayerIface. LayerIfaceImpl is, in turn, the base class for the clas...
Definition: layer_forward.h:169