24 #ifndef __NEURAL_NETWORKS_LEARNABLE_PARAMETERS_H__
25 #define __NEURAL_NETWORKS_LEARNABLE_PARAMETERS_H__
27 #include "algorithms/algorithm.h"
28 #include "algorithms/neural_networks/neural_networks_types.h"
30 #include "data_management/data/homogen_numeric_table.h"
31 #include "data_management/data/homogen_tensor.h"
37 namespace neural_networks
50 class LearnableParametersIface :
public data_management::SerializationIface
56 virtual ~LearnableParametersIface() {}
61 virtual data_management::NumericTablePtr copyToTable()
const = 0;
65 DAAL_DEPRECATED_VIRTUAL
virtual data_management::NumericTablePtr copyToTable(
size_t idx)
const = 0;
69 virtual services::Status copyFromTable(
const data_management::NumericTablePtr &table) = 0;
73 DAAL_DEPRECATED_VIRTUAL
virtual services::Status copyFromTable(
const data_management::NumericTablePtr &table,
size_t idx) = 0;
78 typedef services::SharedPtr<LearnableParametersIface> LearnableParametersIfacePtr;
85 class DAAL_EXPORT ModelImpl :
public daal::algorithms::Model
91 virtual ~ModelImpl() {}
98 DAAL_DEPRECATED
const services::SharedPtr<services::Collection<layers::NextLayers> > getNextLayers()
const
110 services::Status setWeightsAndBiases(
const data_management::NumericTablePtr &weightsAndBiases)
112 return _weightsAndBiases->copyFromTable(weightsAndBiases);
120 const data_management::NumericTablePtr getWeightsAndBiases()
const
122 return _weightsAndBiases->copyToTable();
129 DAAL_DEPRECATED ModelImpl() :
130 _forwardLayers(new neural_networks::ForwardLayers),
131 _nextLayers(new services::Collection<layers::NextLayers>),
132 _weightsAndBiasesCreated(false), _storeWeightsInTable(false)
138 DAAL_DEPRECATED ModelImpl(services::Status &st) :
139 _weightsAndBiasesCreated(false), _storeWeightsInTable(false)
141 _forwardLayers.reset(
new neural_networks::ForwardLayers);
143 st.add(services::ErrorMemoryAllocationFailed);
144 _nextLayers.reset(
new services::Collection<layers::NextLayers>);
146 st.add(services::ErrorMemoryAllocationFailed);
157 DAAL_DEPRECATED ModelImpl(
const neural_networks::ForwardLayersPtr &forwardLayers,
158 const services::SharedPtr<services::Collection<layers::NextLayers> > &nextLayers,
159 bool storeWeightsInTable =
false) :
160 _forwardLayers(forwardLayers), _nextLayers(nextLayers),
161 _weightsAndBiasesCreated(false), _storeWeightsInTable(storeWeightsInTable) {}
166 DAAL_DEPRECATED ModelImpl(
const neural_networks::ForwardLayersPtr &forwardLayers,
167 const services::SharedPtr<services::Collection<layers::NextLayers> > &nextLayers,
168 bool storeWeightsInTable, services::Status &st) :
169 _forwardLayers(forwardLayers), _nextLayers(nextLayers),
170 _weightsAndBiasesCreated(false), _storeWeightsInTable(storeWeightsInTable) {}
175 ModelImpl(
const ModelImpl &model) :
176 _forwardLayers(model._forwardLayers), _nextLayers(model._nextLayers),
177 _storeWeightsInTable(model._storeWeightsInTable),
178 _weightsAndBiasesCreated(model._weightsAndBiasesCreated)
185 DAAL_DEPRECATED ModelImpl(
const ModelImpl &model, services::Status &st) :
186 _forwardLayers(model._forwardLayers), _nextLayers(model._nextLayers),
187 _storeWeightsInTable(model._storeWeightsInTable),
188 _weightsAndBiasesCreated(model._weightsAndBiasesCreated)
194 DAAL_DEPRECATED services::Status checkWeightsAndBiasesAllocation()
196 using namespace services;
197 using namespace layers;
199 _storeWeightsInTable =
true;
200 size_t nLayers = _forwardLayers->size();
201 for (
size_t i = 0; i < nLayers; i++)
203 forward::Input *forwardInput = _forwardLayers->get(i)->getLayerInput();
205 if (forwardInput->get(forward::weights) || forwardInput->get(forward::biases))
207 _storeWeightsInTable =
false;
211 return services::Status();
217 services::Status connectForwardLayers(
size_t layerId)
219 using namespace services;
220 using namespace layers;
222 forward::LayerIfacePtr forwardLayer = _forwardLayers->get(layerId);
223 forwardLayer->allocateResult();
224 forward::ResultPtr forwardResult = forwardLayer->getLayerResult();
225 const NextLayers &next = _nextLayers->get(layerId);
226 for(
size_t j = 0; j < next.size(); j++)
228 _forwardLayers->get(next[j])->addInput(forwardResult, j, 0 );
230 return services::Status();
236 template<
typename modelFPType>
237 DAAL_EXPORT services::Status createWeightsAndBiases(
bool checkAllocation);
239 bool _weightsAndBiasesCreated;
240 bool _storeWeightsInTable;
242 neural_networks::ForwardLayersPtr _forwardLayers;
243 services::SharedPtr<services::Collection<layers::NextLayers> > _nextLayers;
244 LearnableParametersIfacePtr _weightsAndBiases;
248 using interface1::ModelImpl;
249 using interface1::LearnableParametersIface;
250 using interface1::LearnableParametersIfacePtr;
daal::algorithms::neural_networks::interface1::ModelImpl::_nextLayers
services::SharedPtr< services::Collection< layers::NextLayers > > _nextLayers
Definition: neural_networks_learnable_parameters.h:243
daal::algorithms::neural_networks::interface1::ModelImpl::_storeWeightsInTable
bool _storeWeightsInTable
Definition: neural_networks_learnable_parameters.h:240
daal::algorithms::neural_networks::interface1::ForwardLayers
services::Collection< layers::forward::LayerIfacePtr > ForwardLayers
Represents a collection of forward stages of neural network layers.
Definition: neural_networks_types.h:59
daal::algorithms::neural_networks::interface1::ModelImpl::setWeightsAndBiases
services::Status setWeightsAndBiases(const data_management::NumericTablePtr &weightsAndBiases)
Definition: neural_networks_learnable_parameters.h:110
daal::algorithms::neural_networks::interface1::LearnableParametersIface
Learnable parameters for the prediction stage of neural network algorithm.
Definition: neural_networks_learnable_parameters.h:50
daal::algorithms::neural_networks::interface1::ModelImpl
Class Model object for the prediction stage of neural network algorithm.
Definition: neural_networks_learnable_parameters.h:85
daal::algorithms::neural_networks::interface1::ModelImpl::_forwardLayers
neural_networks::ForwardLayersPtr _forwardLayers
Definition: neural_networks_learnable_parameters.h:242
daal::algorithms::elastic_net::training::model
Definition: elastic_net_training_types.h:109
daal::algorithms::elastic_net::training::weights
Definition: elastic_net_training_types.h:89
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:150
daal::algorithms::neural_networks::interface1::ModelImpl::getWeightsAndBiases
const data_management::NumericTablePtr getWeightsAndBiases() const
Definition: neural_networks_learnable_parameters.h:120
daal::algorithms::neural_networks::interface1::ModelImpl::ModelImpl
DAAL_DEPRECATED ModelImpl(const neural_networks::ForwardLayersPtr &forwardLayers, const services::SharedPtr< services::Collection< layers::NextLayers > > &nextLayers, bool storeWeightsInTable=false)
Definition: neural_networks_learnable_parameters.h:157
daal::algorithms::neural_networks::interface1::ModelImpl::getNextLayers
DAAL_DEPRECATED const services::SharedPtr< services::Collection< layers::NextLayers > > getNextLayers() const
Definition: neural_networks_learnable_parameters.h:98