24 #ifndef __NEURAL_NETWORK_PREDICTION_MODEL_H__
25 #define __NEURAL_NETWORK_PREDICTION_MODEL_H__
27 #include "algorithms/algorithm.h"
29 #include "data_management/data/tensor.h"
30 #include "services/daal_defines.h"
31 #include "algorithms/neural_networks/neural_networks_learnable_parameters.h"
32 #include "algorithms/neural_networks/neural_networks_prediction_topology.h"
33 #include "algorithms/neural_networks/layers/layer.h"
34 #include "algorithms/neural_networks/layers/layer_types.h"
35 #include "algorithms/neural_networks/layers/layer_forward.h"
37 #include "algorithms/neural_networks/layers/split/split_layer_forward.h"
50 namespace neural_networks
65 class Parameter :
public daal::algorithms::Parameter
74 Parameter(
size_t batchSize_ = 1,
bool allocateWeightsAndBiases_ =
false) :
75 batchSize(batchSize_), allocateWeightsAndBiases(allocateWeightsAndBiases_)
79 bool allocateWeightsAndBiases;
87 class DAAL_EXPORT Model :
public neural_networks::ModelImpl
90 DECLARE_SERIALIZABLE_CAST(Model);
96 DAAL_DEPRECATED Model();
104 DAAL_DEPRECATED
static services::SharedPtr<Model> create(services::Status *stat = NULL);
113 Model(
const neural_networks::ForwardLayersPtr &forwardLayersForModel,
114 const services::SharedPtr<services::Collection<layers::NextLayers> > &nextLayersForModel);
125 DAAL_DEPRECATED
static services::SharedPtr<Model> create(
126 const neural_networks::ForwardLayersPtr &forwardLayersForModel,
127 const services::SharedPtr<services::Collection<layers::NextLayers> > &nextLayersForModel,
128 services::Status *stat = NULL);
142 template<
typename modelFPType>
143 DAAL_EXPORT Model(
const neural_networks::ForwardLayersPtr &forwardLayersForModel,
144 const services::SharedPtr<services::Collection<layers::NextLayers> > &nextLayersForModel,
145 modelFPType dummy,
bool storeWeightsInTable);
158 template<
typename modelFPType>
159 DAAL_EXPORT DAAL_DEPRECATED
static services::SharedPtr<Model> create(
const neural_networks::ForwardLayersPtr &forwardLayersForModel,
160 const services::SharedPtr<services::Collection<layers::NextLayers> > &nextLayersForModel,
161 bool storeWeightsInTable, services::Status *stat = NULL);
167 DAAL_DEPRECATED Model(
const Model &model);
174 Model(
const prediction::Topology &topology);
183 DAAL_DEPRECATED
static services::SharedPtr<Model> create(
const prediction::Topology &topology, services::Status *stat = NULL);
199 template<
typename modelFPType>
200 services::Status allocate(
const services::Collection<size_t> &sampleSize,
const daal::algorithms::Parameter *parameter = NULL)
202 using namespace services;
203 using namespace data_management;
204 using namespace layers;
208 Parameter defaultParameter;
209 const Parameter *par = (parameter ?
static_cast<const Parameter *
>(parameter) : &defaultParameter);
211 if (_allocatedBatchSize == par->batchSize) {
return services::Status(); }
213 size_t nLayers = _forwardLayers->size();
215 _forwardLayers->get(0)->getLayerInput()->set(forward::data, HomogenTensor<modelFPType>::create(sampleSize, Tensor::doAllocate, &s));
218 for (
size_t i = 1; i < nLayers; i++)
220 _forwardLayers->get(i)->getLayerInput()->eraseInputData();
223 for (
size_t i = 0; i < nLayers; i++)
225 s |= connectForwardLayers(i);
229 bool checkWeightsAndBiasesAlloc =
true;
230 s |= createWeightsAndBiases<modelFPType>(checkWeightsAndBiasesAlloc);
232 _allocatedBatchSize = par->batchSize;
234 for(
size_t i = 0; i < nLayers; i++)
236 getLayer(i)->enableResetOnCompute(
false);
239 for(
size_t i = 0; i < nLayers; i++)
241 layers::forward::LayerIfacePtr layer = _forwardLayers->get(i);
242 SharedPtr<split::forward::Batch<float> > splitLayerFloat = dynamicPointerCast<split::forward::Batch<float>, forward::LayerIface>(layer);
243 SharedPtr<split::forward::Batch<double> > splitLayerDouble = dynamicPointerCast<split::forward::Batch<double>, forward::LayerIface>(layer);
244 if(splitLayerFloat.get() || splitLayerDouble.get())
246 const NextLayers &next = _nextLayers->get(i);
247 for (
size_t j = 0; j < next.size(); j++)
249 layers::forward::LayerIfacePtr nextLayer = _forwardLayers->get(next[j]);
250 nextLayer->getLayerParameter()->allowInplaceComputation =
false;
265 DAAL_DEPRECATED services::Status setLayers(
const neural_networks::ForwardLayersPtr &forwardLayers,
266 const services::SharedPtr<services::Collection<layers::NextLayers> > &nextLayers)
268 _forwardLayers = forwardLayers;
269 _nextLayers = nextLayers;
270 return services::Status();
278 DAAL_DEPRECATED
const neural_networks::ForwardLayersPtr getLayers()
const
280 return _forwardLayers;
289 DAAL_DEPRECATED
const layers::forward::LayerIfacePtr getLayer(
size_t index)
const
291 return _forwardLayers->get(index);
295 size_t _allocatedBatchSize;
300 DAAL_DEPRECATED Model(services::Status &st);
305 DAAL_DEPRECATED Model(
const neural_networks::ForwardLayersPtr &forwardLayersForModel,
306 const services::SharedPtr<services::Collection<layers::NextLayers> > &nextLayersForModel,
307 services::Status &st);
312 template<
typename modelFPType>
313 DAAL_EXPORT DAAL_DEPRECATED Model(
const neural_networks::ForwardLayersPtr &forwardLayersForModel,
314 const services::SharedPtr<services::Collection<layers::NextLayers> > &nextLayersForModel,
315 modelFPType dummy,
bool storeWeightsInTable, services::Status &st);
320 DAAL_DEPRECATED Model(
const prediction::Topology &topology, services::Status &st);
326 template<
typename Archive,
bool onDeserialize>
327 services::Status serialImpl(Archive *arch)
329 return services::Status();
335 DAAL_DEPRECATED services::Status insertLayer(
const layers::forward::LayerDescriptor &layerDescriptor)
337 layers::forward::LayerIfacePtr forwardLayer = layerDescriptor.layer()->clone();
338 _forwardLayers->insert(layerDescriptor.index(), forwardLayer);
339 _nextLayers->insert(layerDescriptor.index(), layerDescriptor.nextLayers());
342 forwardLayer->getLayerParameter()->predictionStage =
true;
343 return services::Status();
347 typedef services::SharedPtr<Model> ModelPtr;
351 using interface1::Model;
352 using interface1::ModelPtr;
353 using interface1::Parameter;
daal::algorithms::neural_networks::prediction::interface1::Model::getLayers
DAAL_DEPRECATED const neural_networks::ForwardLayersPtr getLayers() const
Definition: neural_networks_prediction_model.h:278
daal::algorithms::neural_networks::prediction::interface1::Parameter
Class representing the parameters of neural network prediction.
Definition: neural_networks_prediction_model.h:65
daal::algorithms::association_rules::data
Definition: apriori_types.h:83
daal::algorithms::neural_networks::prediction::interface1::Model::allocate
services::Status allocate(const services::Collection< size_t > &sampleSize, const daal::algorithms::Parameter *parameter=NULL)
Definition: neural_networks_prediction_model.h:200
daal::algorithms::neural_networks::prediction::prediction
Definition: neural_networks_prediction_result.h:55
daal::algorithms::neural_networks::prediction::interface1::Model::setLayers
DAAL_DEPRECATED services::Status setLayers(const neural_networks::ForwardLayersPtr &forwardLayers, const services::SharedPtr< services::Collection< layers::NextLayers > > &nextLayers)
Definition: neural_networks_prediction_model.h:265
daal::algorithms::neural_networks::prediction::interface1::Model
Class Model object for the prediction stage of neural network algorithm.
Definition: neural_networks_prediction_model.h:87
daal::algorithms::neural_networks::prediction::interface1::Model::getLayer
DAAL_DEPRECATED const layers::forward::LayerIfacePtr getLayer(size_t index) const
Definition: neural_networks_prediction_model.h:289
daal::algorithms::neural_networks::prediction::interface1::Parameter::Parameter
Parameter(size_t batchSize_=1, bool allocateWeightsAndBiases_=false)
Definition: neural_networks_prediction_model.h:74
daal::algorithms::neural_networks::prediction::model
Definition: neural_networks_prediction_input.h:66
daal::algorithms::neural_networks::prediction::interface1::Parameter::batchSize
size_t batchSize
Definition: neural_networks_prediction_model.h:78