Compute Library
 21.08
TensorDescriptor.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018-2020 Arm Limited.
3  *
4  * SPDX-License-Identifier: MIT
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to
8  * deal in the Software without restriction, including without limitation the
9  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10  * sell copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in all
14  * copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  * SOFTWARE.
23  */
24 #ifndef ARM_COMPUTE_GRAPH_TENSOR_DESCRIPTOR_H
25 #define ARM_COMPUTE_GRAPH_TENSOR_DESCRIPTOR_H
26 
28 
29 #include "support/ICloneable.h"
30 
31 #include <memory>
32 
33 namespace arm_compute
34 {
35 namespace graph
36 {
37 /** Tensor metadata class */
38 struct TensorDescriptor final : public misc::ICloneable<TensorDescriptor>
39 {
40  /** Default Constructor **/
41  TensorDescriptor() = default;
42  /** Constructor
43  *
44  * @param[in] tensor_shape Tensor shape
45  * @param[in] tensor_data_type Tensor data type
46  * @param[in] tensor_quant_info Tensor quantization info
47  * @param[in] tensor_data_layout Tensor data layout
48  * @param[in] tensor_target Target to allocate the tensor for
49  */
51  DataType tensor_data_type,
52  QuantizationInfo tensor_quant_info = QuantizationInfo(),
53  DataLayout tensor_data_layout = DataLayout::NCHW,
54  Target tensor_target = Target::UNSPECIFIED)
55  : shape(tensor_shape), data_type(tensor_data_type), layout(tensor_data_layout), quant_info(tensor_quant_info), target(tensor_target)
56  {
57  }
58  /** Sets tensor descriptor shape
59  *
60  * @param[in] tensor_shape Tensor shape to set
61  *
62  * @return This tensor descriptor
63  */
65  {
66  shape = tensor_shape;
67  return *this;
68  }
69  /** Sets tensor descriptor data type
70  *
71  * @param[in] tensor_data_type Data type
72  *
73  * @return This tensor descriptor
74  */
76  {
77  data_type = tensor_data_type;
78  return *this;
79  }
80  /** Sets tensor descriptor data layout
81  *
82  * @param[in] data_layout Data layout
83  *
84  * @return This tensor descriptor
85  */
87  {
89  return *this;
90  }
91  /** Sets tensor descriptor quantization info
92  *
93  * @param[in] tensor_quant_info Quantization information
94  *
95  * @return This tensor descriptor
96  */
98  {
99  quant_info = tensor_quant_info;
100  return *this;
101  }
102 
103  // Inherited methods overridden:
104  std::unique_ptr<TensorDescriptor> clone() const override
105  {
106  return std::make_unique<TensorDescriptor>(*this);
107  }
108 
109  TensorShape shape{}; /**< Tensor shape */
110  DataType data_type{ DataType::UNKNOWN }; /**< Data type */
111  DataLayout layout{ DataLayout::NCHW }; /**< Data layout */
112  QuantizationInfo quant_info{}; /**< Quantization info */
113  Target target{ Target::UNSPECIFIED }; /**< Target */
114 };
115 } // namespace graph
116 } // namespace arm_compute
117 #endif /* ARM_COMPUTE_GRAPH_TENSOR_DESCRIPTOR_H */
Shape of a tensor.
Definition: TensorShape.h:39
const DataLayout data_layout
Definition: Im2Col.cpp:151
Copyright (c) 2017-2021 Arm Limited.
Quantization information.
QuantizationInfo quant_info
Quantization info.
TensorDescriptor(TensorShape tensor_shape, DataType tensor_data_type, QuantizationInfo tensor_quant_info=QuantizationInfo(), DataLayout tensor_data_layout=DataLayout::NCHW, Target tensor_target=Target::UNSPECIFIED)
Constructor.
TensorDescriptor & set_quantization_info(QuantizationInfo tensor_quant_info)
Sets tensor descriptor quantization info.
Num samples, channels, height, width.
TensorDescriptor()=default
Default Constructor.
TensorDescriptor & set_layout(DataLayout data_layout)
Sets tensor descriptor data layout.
TensorDescriptor & set_data_type(DataType tensor_data_type)
Sets tensor descriptor data type.
TensorDescriptor & set_shape(TensorShape &tensor_shape)
Sets tensor descriptor shape.
std::unique_ptr< TensorDescriptor > clone() const override
Provide a clone of the current object of class T.
Clonable Interface.
Definition: ICloneable.h:35
DataType
Available data types.
Definition: Types.h:77
DataLayout
[DataLayout enum definition]
Definition: Types.h:111