1 // Copyright (C) 2018-2020 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
6 * @brief a header file for InputInfo class
8 * @file ie_input_info.hpp
17 #include "ie_common.h"
19 #include "ie_precision.hpp"
20 #include "ie_preprocess.hpp"
22 namespace InferenceEngine {
25 * @brief This class contains information about each input of the network
29 /** @brief A smart pointer to the InputInfo instance */
30 using Ptr = std::shared_ptr<InputInfo>;
31 /** @brief A smart pointer to the constant InputInfo instance */
32 using CPtr = std::shared_ptr<const InputInfo>;
35 * @brief Gets a precision of the input data provided by user
37 * By default it matches the layers precision, but there are exceptions of this rule
38 * For Q78 precision networks the input is expected in I16 by default
39 * For FP16 precision networks the input is expected in FP32 by default
40 * The default input precision might be changed preferred one using InputInfo::setPrecision()
42 * For example, for a Q78 precision network you can pass FP32 input data
43 * @return The precision used for input blob creation
45 Precision getPrecision() const {
47 THROW_IE_EXCEPTION << "Data is empty!";
49 return _inputData->getPrecision();
53 * @brief Changes the precision of the input data provided by the user.
55 * This function should be called before loading the network to the plugin
56 * @param p A new precision of the input data to set
58 void setPrecision(Precision p) {
60 THROW_IE_EXCEPTION << "Data is empty!";
62 _inputData->setPrecision(p);
66 * @brief Gets a layout of the input data provided by user
68 * @details By default it matches the layers precision and depends on number of its dimensions:
69 * C - for 1-dimensional,
70 * NC - for 2-dimensional,
71 * CHW - for 3-dimensional,
72 * NCHW - for 4-dimensional
73 * The default input layout might be changed preferred one using setLayout() function.
74 * @return The precision used for input blob creation
78 THROW_IE_EXCEPTION << "Data is empty!";
80 return _inputData->getLayout();
84 * @brief Changes the layout of the input data provided by the user.
86 * This function should be called before loading the network to the plugin
87 * @param l A new layout of the input data to set
89 void setLayout(Layout l) {
91 THROW_IE_EXCEPTION << "Data is empty!";
93 _inputData->setLayout(l);
97 * @brief Gets the name of the input
99 * @return A string - the name of the input
101 const std::string& name() const {
102 return _inputData->getName();
106 * @brief Gets the input data
108 * @return A smart pointer to the input data
110 DataPtr getInputData() const {
115 * @brief Initializes the pointer to the input data that stores the main input parameters like dims, etc
117 * This method initializes the precision with the information from the inputPtr if it was not set
118 * explicitly through InputInfo::setPrecision. If InputInfo::setPrecision is called, this method does not overwrite
120 * @param inputPtr Pointer to the input data to set
122 void setInputData(DataPtr inputPtr) {
123 _inputData = inputPtr;
127 * @brief Returns the tensor descriptor
129 const TensorDesc& getTensorDesc() const {
131 THROW_IE_EXCEPTION << "Data is empty!";
133 return _inputData->getTensorDesc();
137 * @brief Gets pre-process info for the input
139 * @return A reference to the PreProcessInfo instance that contains pre-process info for this input
141 PreProcessInfo& getPreProcess() {
142 return _preProcessInfo;
147 * @brief Pre-process info for the input
149 PreProcessInfo _preProcessInfo;
152 * @brief A smart pointer to the input data
158 * @brief A collection that contains string as key, and InputInfo smart pointer as value
160 using InputsDataMap = std::map<std::string, InputInfo::Ptr>;
163 * @brief A collection that contains string as key, and const InputInfo smart pointer as value
165 using ConstInputsDataMap = std::map<std::string, InputInfo::CPtr>;
167 } // namespace InferenceEngine