22 #ifndef __NEURAL_NETWORKS_LEARNABLE_PARAMETERS_H__
23 #define __NEURAL_NETWORKS_LEARNABLE_PARAMETERS_H__
25 #include "algorithms/algorithm.h"
26 #include "algorithms/neural_networks/neural_networks_types.h"
28 #include "data_management/data/homogen_numeric_table.h"
29 #include "data_management/data/homogen_tensor.h"
35 namespace neural_networks
47 class LearnableParametersIface :
public data_management::SerializationIface
50 virtual ~LearnableParametersIface() {}
52 virtual data_management::NumericTablePtr copyToTable()
const = 0;
53 virtual data_management::NumericTablePtr copyToTable(
size_t idx)
const = 0;
54 virtual services::Status copyFromTable(
const data_management::NumericTablePtr &table) = 0;
55 virtual services::Status copyFromTable(
const data_management::NumericTablePtr &table,
size_t idx) = 0;
57 typedef services::SharedPtr<LearnableParametersIface> LearnableParametersIfacePtr;
63 class DAAL_EXPORT ModelImpl :
public daal::algorithms::Model
66 virtual ~ModelImpl() {}
72 const services::SharedPtr<services::Collection<layers::NextLayers> > getNextLayers()
const
83 services::Status setWeightsAndBiases(
const data_management::NumericTablePtr &weightsAndBiases)
85 return _weightsAndBiases->copyFromTable(weightsAndBiases);
92 const data_management::NumericTablePtr getWeightsAndBiases()
const
94 return _weightsAndBiases->copyToTable();
99 _forwardLayers(new neural_networks::ForwardLayers),
100 _nextLayers(new services::Collection<layers::NextLayers>),
101 _weightsAndBiasesCreated(false), _storeWeightsInTable(false)
104 ModelImpl(services::Status &st) :
105 _weightsAndBiasesCreated(false), _storeWeightsInTable(false)
107 _forwardLayers.reset(
new neural_networks::ForwardLayers);
109 st.add(services::ErrorMemoryAllocationFailed);
110 _nextLayers.reset(
new services::Collection<layers::NextLayers>);
112 st.add(services::ErrorMemoryAllocationFailed);
122 ModelImpl(
const neural_networks::ForwardLayersPtr &forwardLayers,
123 const services::SharedPtr<services::Collection<layers::NextLayers> > &nextLayers,
124 bool storeWeightsInTable =
false) :
125 _forwardLayers(forwardLayers), _nextLayers(nextLayers),
126 _weightsAndBiasesCreated(false), _storeWeightsInTable(storeWeightsInTable) {}
128 ModelImpl(
const neural_networks::ForwardLayersPtr &forwardLayers,
129 const services::SharedPtr<services::Collection<layers::NextLayers> > &nextLayers,
130 bool storeWeightsInTable, services::Status &st) :
131 _forwardLayers(forwardLayers), _nextLayers(nextLayers),
132 _weightsAndBiasesCreated(false), _storeWeightsInTable(storeWeightsInTable) {}
134 ModelImpl(
const ModelImpl &model) :
135 _forwardLayers(model._forwardLayers), _nextLayers(model._nextLayers),
136 _storeWeightsInTable(model._storeWeightsInTable),
137 _weightsAndBiasesCreated(model._weightsAndBiasesCreated)
141 ModelImpl(
const ModelImpl &model, services::Status &st) :
142 _forwardLayers(model._forwardLayers), _nextLayers(model._nextLayers),
143 _storeWeightsInTable(model._storeWeightsInTable),
144 _weightsAndBiasesCreated(model._weightsAndBiasesCreated)
147 services::Status checkWeightsAndBiasesAllocation()
149 using namespace services;
150 using namespace layers;
152 _storeWeightsInTable =
true;
153 size_t nLayers = _forwardLayers->size();
154 for (
size_t i = 0; i < nLayers; i++)
156 forward::Input *forwardInput = _forwardLayers->get(i)->getLayerInput();
158 if (forwardInput->get(forward::weights) || forwardInput->get(forward::biases))
160 _storeWeightsInTable =
false;
164 return services::Status();
167 services::Status connectForwardLayers(
size_t layerId)
169 using namespace services;
170 using namespace layers;
172 forward::LayerIfacePtr forwardLayer = _forwardLayers->get(layerId);
173 forwardLayer->allocateResult();
174 forward::ResultPtr forwardResult = forwardLayer->getLayerResult();
175 const NextLayers &next = _nextLayers->get(layerId);
176 for(
size_t j = 0; j < next.size(); j++)
178 _forwardLayers->get(next[j])->addInput(forwardResult, j, 0 );
180 return services::Status();
183 template<
typename modelFPType>
184 DAAL_EXPORT services::Status createWeightsAndBiases(
bool checkAllocation);
186 bool _weightsAndBiasesCreated;
187 bool _storeWeightsInTable;
189 neural_networks::ForwardLayersPtr _forwardLayers;
190 services::SharedPtr<services::Collection<layers::NextLayers> > _nextLayers;
191 LearnableParametersIfacePtr _weightsAndBiases;
195 using interface1::ModelImpl;
196 using interface1::LearnableParametersIface;
197 using interface1::LearnableParametersIfacePtr;
daal
Definition: algorithm_base_common.h:31
daal::algorithms::neural_networks::interface1::ModelImpl::setWeightsAndBiases
services::Status setWeightsAndBiases(const data_management::NumericTablePtr &weightsAndBiases)
Definition: neural_networks_learnable_parameters.h:83
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:57
daal::algorithms::neural_networks::interface1::ModelImpl::getNextLayers
const services::SharedPtr< services::Collection< layers::NextLayers > > getNextLayers() const
Definition: neural_networks_learnable_parameters.h:72
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:146
daal::algorithms::classifier::prediction::model
Definition: classifier_predict_types.h:66
daal::algorithms::neural_networks::interface1::ModelImpl::_forwardLayers
neural_networks::ForwardLayersPtr _forwardLayers
Definition: neural_networks_learnable_parameters.h:189
daal::algorithms::classifier::training::weights
Definition: classifier_training_types.h:62
daal::algorithms::neural_networks::interface1::ModelImpl::ModelImpl
ModelImpl(const ModelImpl &model, services::Status &st)
Definition: neural_networks_learnable_parameters.h:141
daal::algorithms::neural_networks::interface1::LearnableParametersIface
Learnable parameters for the prediction stage of neural network algorithm.
Definition: neural_networks_learnable_parameters.h:47
daal::algorithms::neural_networks::interface1::ModelImpl::ModelImpl
ModelImpl(const neural_networks::ForwardLayersPtr &forwardLayers, const services::SharedPtr< services::Collection< layers::NextLayers > > &nextLayers, bool storeWeightsInTable=false)
Definition: neural_networks_learnable_parameters.h:122
daal::algorithms::neural_networks::interface1::ModelImpl::getWeightsAndBiases
const data_management::NumericTablePtr getWeightsAndBiases() const
Definition: neural_networks_learnable_parameters.h:92
daal::algorithms::neural_networks::interface1::ModelImpl
Class Model object for the prediction stage of neural network algorithm.
Definition: neural_networks_learnable_parameters.h:63
daal::algorithms::neural_networks::interface1::ModelImpl::_storeWeightsInTable
bool _storeWeightsInTable
Definition: neural_networks_learnable_parameters.h:187
daal::algorithms::neural_networks::interface1::ModelImpl::_nextLayers
services::SharedPtr< services::Collection< layers::NextLayers > > _nextLayers
Definition: neural_networks_learnable_parameters.h:190