C++ API Reference for Intel® Data Analytics Acceleration Library 2018 Update 2

neural_networks_prediction.h
1 /* file: neural_networks_prediction.h */
2 /*******************************************************************************
3 * Copyright 2014-2018 Intel Corporation
4 * All Rights Reserved.
5 *
6 * If this software was obtained under the Intel Simplified Software License,
7 * the following terms apply:
8 *
9 * The source code, information and material ("Material") contained herein is
10 * owned by Intel Corporation or its suppliers or licensors, and title to such
11 * Material remains with Intel Corporation or its suppliers or licensors. The
12 * Material contains proprietary information of Intel or its suppliers and
13 * licensors. The Material is protected by worldwide copyright laws and treaty
14 * provisions. No part of the Material may be used, copied, reproduced,
15 * modified, published, uploaded, posted, transmitted, distributed or disclosed
16 * in any way without Intel's prior express written permission. No license under
17 * any patent, copyright or other intellectual property rights in the Material
18 * is granted to or conferred upon you, either expressly, by implication,
19 * inducement, estoppel or otherwise. Any license under such intellectual
20 * property rights must be express and approved by Intel in writing.
21 *
22 * Unless otherwise agreed by Intel in writing, you may not remove or alter this
23 * notice or any other notice embedded in Materials by Intel or Intel's
24 * suppliers or licensors in any way.
25 *
26 *
27 * If this software was obtained under the Apache License, Version 2.0 (the
28 * "License"), the following terms apply:
29 *
30 * You may not use this file except in compliance with the License. You may
31 * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
32 *
33 *
34 * Unless required by applicable law or agreed to in writing, software
35 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
36 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
37 *
38 * See the License for the specific language governing permissions and
39 * limitations under the License.
40 *******************************************************************************/
41 
42 /*
43 //++
44 // Implementation of the interface for neural network model-based prediction
45 // in the batch processing mode
46 //--
47 */
48 
49 #ifndef __NEURAL_NETWORKS_PREDICTION_H__
50 #define __NEURAL_NETWORKS_PREDICTION_H__
51 
52 #include "algorithms/algorithm.h"
53 
54 #include "services/daal_defines.h"
55 #include "algorithms/neural_networks/neural_networks_types.h"
56 #include "algorithms/neural_networks/neural_networks_prediction_types.h"
57 #include "algorithms/neural_networks/neural_networks_prediction_model.h"
58 #include "algorithms/neural_networks/layers/layer.h"
59 
60 namespace daal
61 {
62 namespace algorithms
63 {
67 namespace neural_networks
68 {
69 namespace prediction
70 {
71 namespace interface1
72 {
82 template<typename algorithmFPType, Method method, CpuType cpu>
83 class DAAL_EXPORT BatchContainer : public PredictionContainerIface
84 {
85 public:
91  BatchContainer(daal::services::Environment::env *daalEnv);
93  ~BatchContainer();
97  services::Status compute() DAAL_C11_OVERRIDE;
98  services::Status setupCompute() DAAL_C11_OVERRIDE;
99  services::Status resetCompute() DAAL_C11_OVERRIDE;
100 };
101 
117 template<typename algorithmFPType = DAAL_ALGORITHM_FP_TYPE, Method method = defaultDense>
118 class Batch : public daal::algorithms::Prediction
119 {
120 public:
121  typedef algorithms::neural_networks::prediction::Input InputType;
122  typedef algorithms::neural_networks::prediction::Parameter ParameterType;
123  typedef algorithms::neural_networks::prediction::Result ResultType;
124 
126  Batch()
127  {
128  initialize();
129  };
130 
136  Batch(const Batch<algorithmFPType, method> &other) : parameter(other.parameter), input(other.input)
137  {
138  initialize();
139  }
140 
141  virtual ~Batch() {}
142 
147  ResultPtr getResult()
148  {
149  return _result;
150  }
151 
158  services::Status setResult(const ResultPtr& res)
159  {
160  DAAL_CHECK(res, services::ErrorNullResult)
161  _result = res;
162  _res = _result.get();
163  return services::Status();
164  }
165 
171  services::SharedPtr<Batch<algorithmFPType, method> > clone() const
172  {
173  return services::SharedPtr<Batch<algorithmFPType, method> >(cloneImpl());
174  }
175 
180  virtual int getMethod() const DAAL_C11_OVERRIDE { return(int) method; }
181 
182  InputType input;
183  ParameterType parameter;
185 protected:
186  void initialize()
187  {
188  Prediction::_ac = new __DAAL_ALGORITHM_CONTAINER(batch, BatchContainer, algorithmFPType, method)(&_env);
189  _in = &input;
190  _par = &parameter;
191  _result.reset(new ResultType());
192  }
193 
194  virtual Batch<algorithmFPType, method> *cloneImpl() const DAAL_C11_OVERRIDE
195  {
196  return new Batch<algorithmFPType, method>(*this);
197  }
198 
199  virtual services::Status allocateResult() DAAL_C11_OVERRIDE
200  {
201  services::Status s = _result->allocate<algorithmFPType>(&input, &parameter, (int) method);
202  _res = _result.get();
203  return s;
204  }
205 
206 private:
207  ResultPtr _result;
208 };
209 
211 } // namespace interface1
212 using interface1::Batch;
213 using interface1::BatchContainer;
214 
215 } // namespace prediction
216 } // namespace neural_networks
217 } // namespace algorithms
218 } // namespace daal
219 #endif
daal::algorithms::neural_networks::prediction::interface1::Batch::clone
services::SharedPtr< Batch< algorithmFPType, method > > clone() const
Definition: neural_networks_prediction.h:171
daal::algorithms::neural_networks::prediction::interface1::Batch::Batch
Batch(const Batch< algorithmFPType, method > &other)
Definition: neural_networks_prediction.h:136
daal::services::interface1::Environment::_envStruct
The environment structure.
Definition: env_detect.h:95
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::prediction::prediction
Definition: neural_networks_prediction_result.h:79
daal::algorithms::Prediction
Provides prediction methods depending on the model such as linear_regression::Model. The methods of the class support different computation modes: batch, distributed, and online(see ComputeMode). Classes that implement specific algorithms of the model based data prediction are derived classes of the Prediction class. The class additionally provides virtual methods for validation of input and output parameters of the algorithms.
Definition: prediction.h:76
daal::algorithms::neural_networks::prediction::interface1::BatchContainer
Class containing methods to train neural network model using algorithmFPType precision arithmetic...
Definition: neural_networks_prediction.h:83
daal::algorithms::neural_networks::prediction::interface1::Parameter
Class representing the parameters of neural network prediction.
Definition: neural_networks_prediction_model.h:88
daal::algorithms::PredictionContainerIface
Abstract interface class that provides virtual methods to access and run implementations of the algor...
Definition: prediction.h:66
daal::algorithms::neural_networks::prediction::interface1::Batch::getResult
ResultPtr getResult()
Definition: neural_networks_prediction.h:147
daal_defines.h
daal::algorithms::neural_networks::prediction::interface1::Result
Provides methods to access result obtained with the compute() method of the neural networks predictio...
Definition: neural_networks_prediction_result.h:102
daal::batch
Definition: daal_defines.h:132
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::prediction::interface1::Input
Input objects of the neural networks prediction algorithm.
Definition: neural_networks_prediction_input.h:103
daal::services::interface1::SharedPtr::get
T * get() const
Definition: daal_shared_ptr.h:332
daal::algorithms::neural_networks::prediction::interface1::Batch::Batch
Batch()
Definition: neural_networks_prediction.h:126
daal::algorithms::neural_networks::prediction::interface1::Batch::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: neural_networks_prediction.h:180
daal::algorithms::neural_networks::prediction::interface1::Batch
Provides methods for neural network model-based prediction in the batch processing mode...
Definition: neural_networks_prediction.h:118
daal::algorithms::neural_networks::prediction::interface1::Batch::setResult
services::Status setResult(const ResultPtr &res)
Definition: neural_networks_prediction.h:158
daal::algorithms::neural_networks::prediction::interface1::Batch::parameter
ParameterType parameter
Definition: neural_networks_prediction.h:183
daal::services::ErrorNullResult
Definition: error_indexes.h:122
daal::algorithms::neural_networks::prediction::interface1::Batch::input
InputType input
Definition: neural_networks_prediction.h:182

For more complete information about compiler optimizations, see our Optimization Notice.