48 #ifndef __NEURAL_NETWORKS_LEARNABLE_PARAMETERS_H__ 49 #define __NEURAL_NETWORKS_LEARNABLE_PARAMETERS_H__ 51 #include "algorithms/algorithm.h" 52 #include "algorithms/neural_networks/neural_networks_types.h" 54 #include "data_management/data/homogen_numeric_table.h" 55 #include "data_management/data/homogen_tensor.h" 61 namespace neural_networks
73 class LearnableParametersIface :
public data_management::SerializationIface
76 virtual ~LearnableParametersIface() {}
78 virtual data_management::NumericTablePtr copyToTable()
const = 0;
79 virtual data_management::NumericTablePtr copyToTable(
size_t idx)
const = 0;
80 virtual services::Status copyFromTable(
const data_management::NumericTablePtr &table) = 0;
81 virtual services::Status copyFromTable(
const data_management::NumericTablePtr &table,
size_t idx) = 0;
83 typedef services::SharedPtr<LearnableParametersIface> LearnableParametersIfacePtr;
89 class DAAL_EXPORT ModelImpl :
public daal::algorithms::Model
92 virtual ~ModelImpl() {}
98 const services::SharedPtr<services::Collection<layers::NextLayers> > getNextLayers()
const 109 services::Status setWeightsAndBiases(
const data_management::NumericTablePtr &weightsAndBiases)
111 return _weightsAndBiases->copyFromTable(weightsAndBiases);
118 const data_management::NumericTablePtr getWeightsAndBiases()
const 120 return _weightsAndBiases->copyToTable();
125 _forwardLayers(
new neural_networks::ForwardLayers),
126 _nextLayers(
new services::Collection<layers::NextLayers>),
127 _weightsAndBiasesCreated(
false), _storeWeightsInTable(
false)
130 ModelImpl(services::Status &st) :
131 _weightsAndBiasesCreated(
false), _storeWeightsInTable(
false)
133 _forwardLayers.reset(
new neural_networks::ForwardLayers);
135 st.add(services::ErrorMemoryAllocationFailed);
136 _nextLayers.reset(
new services::Collection<layers::NextLayers>);
138 st.add(services::ErrorMemoryAllocationFailed);
148 ModelImpl(
const neural_networks::ForwardLayersPtr &forwardLayers,
149 const services::SharedPtr<services::Collection<layers::NextLayers> > &nextLayers,
150 bool storeWeightsInTable =
false) :
151 _forwardLayers(forwardLayers), _nextLayers(nextLayers),
152 _weightsAndBiasesCreated(false), _storeWeightsInTable(storeWeightsInTable) {}
154 ModelImpl(
const neural_networks::ForwardLayersPtr &forwardLayers,
155 const services::SharedPtr<services::Collection<layers::NextLayers> > &nextLayers,
156 bool storeWeightsInTable, services::Status &st) :
157 _forwardLayers(forwardLayers), _nextLayers(nextLayers),
158 _weightsAndBiasesCreated(
false), _storeWeightsInTable(storeWeightsInTable) {}
160 ModelImpl(
const ModelImpl &model) :
161 _forwardLayers(model._forwardLayers), _nextLayers(model._nextLayers),
162 _storeWeightsInTable(model._storeWeightsInTable),
163 _weightsAndBiasesCreated(model._weightsAndBiasesCreated)
167 ModelImpl(
const ModelImpl &model, services::Status &st) :
168 _forwardLayers(model._forwardLayers), _nextLayers(model._nextLayers),
169 _storeWeightsInTable(model._storeWeightsInTable),
170 _weightsAndBiasesCreated(model._weightsAndBiasesCreated)
173 services::Status checkWeightsAndBiasesAllocation()
175 using namespace services;
176 using namespace layers;
178 _storeWeightsInTable =
true;
179 size_t nLayers = _forwardLayers->size();
180 for (
size_t i = 0; i < nLayers; i++)
182 forward::Input *forwardInput = _forwardLayers->get(i)->getLayerInput();
184 if (forwardInput->get(forward::weights) || forwardInput->get(forward::biases))
186 _storeWeightsInTable =
false;
190 return services::Status();
193 services::Status connectForwardLayers(
size_t layerId)
195 using namespace services;
196 using namespace layers;
198 forward::LayerIfacePtr forwardLayer = _forwardLayers->get(layerId);
199 forwardLayer->allocateResult();
200 forward::ResultPtr forwardResult = forwardLayer->getLayerResult();
201 const NextLayers &next = _nextLayers->get(layerId);
202 for(
size_t j = 0; j < next.size(); j++)
204 _forwardLayers->get(next[j])->addInput(forwardResult, j, 0 );
206 return services::Status();
209 template<
typename modelFPType>
210 DAAL_EXPORT services::Status createWeightsAndBiases(
bool checkAllocation);
212 bool _weightsAndBiasesCreated;
213 bool _storeWeightsInTable;
215 neural_networks::ForwardLayersPtr _forwardLayers;
216 services::SharedPtr<services::Collection<layers::NextLayers> > _nextLayers;
217 LearnableParametersIfacePtr _weightsAndBiases;
221 using interface1::ModelImpl;
222 using interface1::LearnableParametersIface;
223 using interface1::LearnableParametersIfacePtr;
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::interface1::ModelImpl::setWeightsAndBiases
services::Status setWeightsAndBiases(const data_management::NumericTablePtr &weightsAndBiases)
Definition: neural_networks_learnable_parameters.h:109
daal::services::interface1::Status::add
Status & add(ErrorID id)
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:172
daal::algorithms::neural_networks::interface1::ModelImpl::_forwardLayers
neural_networks::ForwardLayersPtr _forwardLayers
Definition: neural_networks_learnable_parameters.h:215
daal::algorithms::neural_networks::interface1::ModelImpl::ModelImpl
ModelImpl(const ModelImpl &model, services::Status &st)
Definition: neural_networks_learnable_parameters.h:167
daal::algorithms::neural_networks::interface1::ModelImpl::getWeightsAndBiases
const data_management::NumericTablePtr getWeightsAndBiases() const
Definition: neural_networks_learnable_parameters.h:118
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::interface1::LearnableParametersIface
Learnable parameters for the prediction stage of neural network algorithm.
Definition: neural_networks_learnable_parameters.h:73
daal::algorithms::neural_networks::interface1::ModelImpl::getNextLayers
const services::SharedPtr< services::Collection< layers::NextLayers > > getNextLayers() const
Definition: neural_networks_learnable_parameters.h:98
daal::algorithms::linear_regression::training::model
Definition: linear_regression_training_types.h:125
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:148
daal::data_management::interface1::SerializationIface
Abstract interface class that defines the interface for serialization and deserialization.
Definition: data_serialize.h:76
daal::algorithms::interface1::Model
The base class for the classes that represent the models, such as linear_regression::Model or svm::Mo...
Definition: model.h:78
daal::algorithms::neural_networks::interface1::ModelImpl
Class Model object for the prediction stage of neural network algorithm.
Definition: neural_networks_learnable_parameters.h:89
daal::algorithms::neural_networks::interface1::ModelImpl::_storeWeightsInTable
bool _storeWeightsInTable
Definition: neural_networks_learnable_parameters.h:213
daal::algorithms::neural_networks::interface1::ModelImpl::_nextLayers
services::SharedPtr< services::Collection< layers::NextLayers > > _nextLayers
Definition: neural_networks_learnable_parameters.h:216
daal::services::interface1::Collection
Class that implements functionality of the Collection container.
Definition: collection.h:69
daal::algorithms::em_gmm::init::weights
Definition: em_gmm_init_types.h:95