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

neural_networks_prediction.h
1 /* file: neural_networks_prediction.h */
2 /*******************************************************************************
3 * Copyright 2014-2017 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:
122  Batch()
123  {
124  initialize();
125  };
126 
132  Batch(const Batch<algorithmFPType, method> &other) : parameter(other.parameter), input(other.input)
133  {
134  initialize();
135  }
136 
137  virtual ~Batch() {}
138 
143  ResultPtr getResult()
144  {
145  return _result;
146  }
147 
154  services::Status setResult(const ResultPtr& res)
155  {
156  DAAL_CHECK(res, services::ErrorNullResult)
157  _result = res;
158  _res = _result.get();
159  return services::Status();
160  }
161 
167  services::SharedPtr<Batch<algorithmFPType, method> > clone() const
168  {
169  return services::SharedPtr<Batch<algorithmFPType, method> >(cloneImpl());
170  }
171 
176  virtual int getMethod() const DAAL_C11_OVERRIDE { return(int) method; }
177 
178  Input input;
179  Parameter parameter;
181 protected:
182  void initialize()
183  {
184  Prediction::_ac = new __DAAL_ALGORITHM_CONTAINER(batch, BatchContainer, algorithmFPType, method)(&_env);
185  _in = &input;
186  _par = &parameter;
187  _result.reset(new Result());
188  }
189 
190  virtual Batch<algorithmFPType, method> *cloneImpl() const DAAL_C11_OVERRIDE
191  {
192  return new Batch<algorithmFPType, method>(*this);
193  }
194 
195  virtual services::Status allocateResult() DAAL_C11_OVERRIDE
196  {
197  services::Status s = _result->allocate<algorithmFPType>(&input, &parameter, (int) method);
198  _res = _result.get();
199  return s;
200  }
201 
202 private:
203  ResultPtr _result;
204 };
205 
207 } // namespace interface1
208 using interface1::Batch;
209 using interface1::BatchContainer;
210 
211 } // namespace prediction
212 } // namespace neural_networks
213 } // namespace algorithms
214 } // namespace daal
215 #endif
daal::algorithms::neural_networks::prediction::interface1::Batch::Batch
Batch(const Batch< algorithmFPType, method > &other)
Definition: neural_networks_prediction.h:132
daal
Definition: algorithm_base_common.h:57
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::Batch::clone
services::SharedPtr< Batch< algorithmFPType, method > > clone() const
Definition: neural_networks_prediction.h:167
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:143
daal_defines.h
daal::algorithms::neural_networks::prediction::interface1::Batch::parameter
Parameter parameter
Definition: neural_networks_prediction.h:179
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:131
daal::algorithms::neural_networks::prediction::interface1::Input
Input objects of the neural networks prediction algorithm.
Definition: neural_networks_prediction_input.h:103
daal::algorithms::neural_networks::prediction::interface1::Batch::Batch
Batch()
Definition: neural_networks_prediction.h:122
daal::algorithms::neural_networks::prediction::interface1::Batch::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: neural_networks_prediction.h:176
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::classifier::prediction::prediction
Definition: classifier_predict_types.h:102
daal::algorithms::neural_networks::prediction::interface1::Batch::setResult
services::Status setResult(const ResultPtr &res)
Definition: neural_networks_prediction.h:154
daal::services::ErrorNullResult
Definition: error_indexes.h:122
daal::algorithms::neural_networks::prediction::interface1::Batch::input
Input input
Definition: neural_networks_prediction.h:178

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