Compute Library
 21.02
TensorInfo Class Referencefinal

Store the tensor's metadata. More...

#include <TensorInfo.h>

Collaboration diagram for TensorInfo:
[legend]

Public Member Functions

 TensorInfo ()
 Default constructor. More...
 
 ~TensorInfo ()=default
 Default destructor. More...
 
 TensorInfo (const ITensorInfo &info)
 Allow instances of this class to be copy constructed. More...
 
 TensorInfo (const TensorInfo &)=default
 Allow instances of this class to be copy constructed. More...
 
TensorInfooperator= (const TensorInfo &)=default
 Allow instances of this class to be copied. More...
 
 TensorInfo (TensorInfo &&)=default
 Allow instances of this class to be move constructed. More...
 
TensorInfooperator= (TensorInfo &&)=default
 Allow instances of this class to be moved. More...
 
 TensorInfo (Format format)
 Construct a tensor info with a format. More...
 
 TensorInfo (unsigned int width, unsigned int height, Format format)
 2D tensor constructor More...
 
 TensorInfo (const TensorShape &tensor_shape, Format format)
 Constructor. More...
 
 TensorInfo (size_t num_channels, DataType data_type)
 Construct a tensor info with a data type and number of channels. More...
 
 TensorInfo (const TensorShape &tensor_shape, size_t num_channels, DataType data_type)
 Constructor. More...
 
 TensorInfo (const TensorShape &tensor_shape, size_t num_channels, DataType data_type, DataLayout data_layout)
 Constructor. More...
 
 TensorInfo (const TensorShape &tensor_shape, size_t num_channels, DataType data_type, QuantizationInfo quantization_info)
 Constructor. More...
 
 TensorInfo (const HOGInfo &hog_info, unsigned int width, unsigned int height)
 Constructor. More...
 
void init (Format format)
 Initialize the tensor info with just a format. More...
 
void init (const TensorShape &tensor_shape, Format format)
 Initialize the metadata structure with the given parameters. More...
 
void init (const TensorShape &tensor_shape, Format format, const Strides &strides_in_bytes, size_t offset_first_element_in_bytes, size_t total_size_in_bytes)
 Initialize the metadata structure with the given parameters. More...
 
void init (size_t num_channels, DataType data_type)
 Initialize the tensor info with just a format. More...
 
void init (const TensorShape &tensor_shape, size_t num_channels, DataType data_type)
 Initialize the metadata structure with the given parameters. More...
 
void init (const TensorShape &tensor_shape, size_t num_channels, DataType data_type, const Strides &strides_in_bytes, size_t offset_first_element_in_bytes, size_t total_size_in_bytes)
 Initialize the metadata structure with the given parameters. More...
 
void init (const HOGInfo &hog_info, unsigned int width, unsigned int height)
 Initialize the metadata structure for the given HOG's metadata. More...
 
size_t init_auto_padding (const TensorShape &tensor_shape, Format format)
 Initialize the metadata structure for the given tensor shape and single-plane format, (Padding is automatically calculated) More...
 
size_t init_auto_padding (const TensorShape &tensor_shape, size_t num_channels, DataType data_type)
 Initialize the metadata structure for the given tensor shape, number of channels and data type. More...
 
size_t init_auto_padding (const HOGInfo &hog_info, unsigned int width, unsigned int height)
 Initialize the metadata structure for the given HOG's metadata. More...
 
std::unique_ptr< ITensorInfoclone () const override
 Provide a clone of the current object of class T. More...
 
ITensorInfoset_data_type (DataType data_type) override
 Set the data type to the specified value. More...
 
ITensorInfoset_num_channels (int num_channels) override
 Set the number of channels to the specified value. More...
 
ITensorInfoset_format (Format format) override
 Set the format of an already initialized tensor. More...
 
ITensorInfoset_tensor_shape (const TensorShape &shape) override
 Set the shape of an already initialized tensor. More...
 
ITensorInfoset_tensor_dims_state (const TensorDimsState &state) override
 Set the state for each dimension of the tensor. More...
 
ITensorInfoset_quantization_info (const QuantizationInfo &quantization_info) override
 Set the quantization settings (scale and offset) of the tensor. More...
 
ITensorInfoset_data_layout (const DataLayout &data_layout) override
 Set the data layout of the tensor. More...
 
ITensorInforeset_padding () override
 Resets the padding settings of the tensor. More...
 
bool auto_padding () override
 Update the offset to the first element and the strides to automatically computed values. More...
 
bool extend_padding (const PaddingSize &padding) override
 Update the offset to the first element, the strides and the total size. More...
 
size_t dimension (size_t index) const override
 Return the size of the requested dimension. More...
 
size_t dimension (DataLayoutDimension dimension) const override
 Return the size of the requested data layout dimension. More...
 
const Stridesstrides_in_bytes () const override
 The strides in bytes for accessing each dimension of the tensor. More...
 
size_t offset_first_element_in_bytes () const override
 The offset from the beginning of the memory allocation to the first element of the tensor. More...
 
int32_t offset_element_in_bytes (const Coordinates &pos) const override
 The offset in bytes from the beginning of the memory allocation to access the element at position (x, y, z ...) More...
 
size_t element_size () const override
 Element size in bytes calculated as data_size() * num_channels() More...
 
size_t num_dimensions () const override
 The number of dimensions of the tensor (rank) More...
 
size_t num_channels () const override
 The number of channels for each tensor element. More...
 
const TensorShapetensor_shape () const override
 Size for each dimension of the tensor. More...
 
const TensorDimsStatetensor_dims_state () const override
 State of each dimension of the tensor shape. More...
 
DataType data_type () const override
 Data type used for each element of the tensor. More...
 
Format format () const override
 Colour format of the image. More...
 
size_t total_size () const override
 Returns the total size of the tensor in bytes. More...
 
PaddingSize padding () const override
 Padding of tensor. More...
 
bool has_padding () const override
 Checks if the tensor has been allocated with padding or not. More...
 
bool is_resizable () const override
 Flag indicating whether the size of the tensor can be changed. More...
 
bool is_dynamic () const override
 Flag indicating whether the shape of the tensor is dynamic, meaning that it can change on kernel/function execution. More...
 
ITensorInfoset_is_resizable (bool is_resizable) override
 Set the flag whether the tensor size can be changed. More...
 
ValidRegion valid_region () const override
 Valid region of the tensor. More...
 
void set_valid_region (const ValidRegion &valid_region) override
 Set the valid region of the tensor. More...
 
QuantizationInfo quantization_info () const override
 Get the quantization settings (scale and offset) of the tensor. More...
 
DataLayout data_layout () const override
 Get the data layout of the tensor. More...
 
- Public Member Functions inherited from ITensorInfo
virtual ~ITensorInfo ()=default
 Default virtual destructor. More...
 
- Public Member Functions inherited from ICloneable< ITensorInfo >
virtual ~ICloneable ()=default
 Default virtual desctructor. More...
 

Additional Inherited Members

- Public Types inherited from ITensorInfo
using TensorDimsState = Coordinates
 
- Static Public Member Functions inherited from ITensorInfo
template<typename... Infos>
static std::pair< TensorShape, ValidRegionbroadcast_shape_and_valid_region (const Infos &... infos)
 If infos are broadcast compatible tensor info's, return the broadcasted shape and the intersection of the broadcasted valid regions of the tensors. More...
 

Detailed Description

Store the tensor's metadata.

Definition at line 45 of file TensorInfo.h.

Constructor & Destructor Documentation

◆ TensorInfo() [1/12]

Default constructor.

Definition at line 37 of file TensorInfo.cpp.

References arm_compute::NCHW, and arm_compute::UNKNOWN.

38  : _total_size(0), _offset_first_element_in_bytes(0), _strides_in_bytes(), _num_channels(0), _tensor_shape(), _dims_state(), _data_type(DataType::UNKNOWN), _format(Format::UNKNOWN), _is_resizable{ true },
39  _valid_region{ Coordinates(), _tensor_shape }, _padding{ 0 }, _quantization_info(), _data_layout(DataLayout::NCHW)
40 {
41 }
Coordinates of an item.
Definition: Coordinates.h:37
Num samples, channels, height, width.

◆ ~TensorInfo()

~TensorInfo ( )
default

Default destructor.

◆ TensorInfo() [2/12]

TensorInfo ( const ITensorInfo info)

Allow instances of this class to be copy constructed.

Definition at line 43 of file TensorInfo.cpp.

References ITensorInfo::data_layout(), ITensorInfo::data_type(), ITensorInfo::format(), ITensorInfo::is_resizable(), ITensorInfo::num_channels(), ITensorInfo::offset_first_element_in_bytes(), ITensorInfo::padding(), ITensorInfo::quantization_info(), ITensorInfo::strides_in_bytes(), ITensorInfo::tensor_dims_state(), ITensorInfo::tensor_shape(), ITensorInfo::total_size(), and ITensorInfo::valid_region().

44  : TensorInfo()
45 {
46  _total_size = info.total_size();
47  _offset_first_element_in_bytes = info.offset_first_element_in_bytes();
48  _strides_in_bytes = info.strides_in_bytes();
49  _num_channels = info.num_channels();
50  _tensor_shape = info.tensor_shape();
51  _dims_state = info.tensor_dims_state();
52  _data_type = info.data_type();
53  _format = info.format();
54  _is_resizable = info.is_resizable();
55  _valid_region = info.valid_region();
56  _padding = info.padding();
57  _quantization_info = info.quantization_info();
58  _data_layout = info.data_layout();
59 }
virtual DataType data_type() const =0
Data type used for each element of the tensor.
virtual ValidRegion valid_region() const =0
Valid region of the tensor.
virtual bool is_resizable() const =0
Flag indicating whether the size of the tensor can be changed.
virtual Format format() const =0
Colour format of the image.
virtual const TensorShape & tensor_shape() const =0
Size for each dimension of the tensor.
virtual PaddingSize padding() const =0
Padding of tensor.
virtual QuantizationInfo quantization_info() const =0
Get the quantization settings (scale and offset) of the tensor.
virtual size_t offset_first_element_in_bytes() const =0
The offset from the beginning of the memory allocation to the first element of the tensor...
virtual size_t total_size() const =0
Returns the total size of the tensor in bytes.
TensorInfo()
Default constructor.
Definition: TensorInfo.cpp:37
virtual const Strides & strides_in_bytes() const =0
The strides in bytes for accessing each dimension of the tensor.
virtual const TensorDimsState & tensor_dims_state() const =0
State of each dimension of the tensor shape.
virtual size_t num_channels() const =0
The number of channels for each tensor element.
virtual DataLayout data_layout() const =0
Get the data layout of the tensor.

◆ TensorInfo() [3/12]

TensorInfo ( const TensorInfo )
default

Allow instances of this class to be copy constructed.

◆ TensorInfo() [4/12]

TensorInfo ( TensorInfo &&  )
default

Allow instances of this class to be move constructed.

◆ TensorInfo() [5/12]

TensorInfo ( Format  format)

Construct a tensor info with a format.

Can be used for automatic derivation of the shape by the function.

Parameters
[in]formatFormat of the tensor.

Definition at line 61 of file TensorInfo.cpp.

63 {
64 }
Shape of a tensor.
Definition: TensorShape.h:39
Format format() const override
Colour format of the image.
Definition: TensorInfo.h:274
TensorInfo()
Default constructor.
Definition: TensorInfo.cpp:37

◆ TensorInfo() [6/12]

TensorInfo ( unsigned int  width,
unsigned int  height,
Format  format 
)

2D tensor constructor

Parameters
[in]widthWidth of the 2D tensor
[in]heightHeight of the 2D tensor
[in]formatSingle plane format of the tensor.

Definition at line 66 of file TensorInfo.cpp.

67  : TensorInfo(TensorShape(width, height), format)
68 {
69 }
Shape of a tensor.
Definition: TensorShape.h:39
Format format() const override
Colour format of the image.
Definition: TensorInfo.h:274
TensorInfo()
Default constructor.
Definition: TensorInfo.cpp:37

◆ TensorInfo() [7/12]

TensorInfo ( const TensorShape tensor_shape,
Format  format 
)

Constructor.

Parameters
[in]tensor_shapeIt specifies the size for each dimension of the tensor in number of elements.
[in]formatSingle plane format of the tensor.

Definition at line 71 of file TensorInfo.cpp.

References TensorInfo::init().

72  : TensorInfo()
73 {
74  init(tensor_shape, format);
75 }
Format format() const override
Colour format of the image.
Definition: TensorInfo.h:274
void init(Format format)
Initialize the tensor info with just a format.
Definition: TensorInfo.cpp:109
TensorInfo()
Default constructor.
Definition: TensorInfo.cpp:37

◆ TensorInfo() [8/12]

TensorInfo ( size_t  num_channels,
DataType  data_type 
)

Construct a tensor info with a data type and number of channels.

Can be used for automatic derivation of the shape by the function.

Parameters
[in]num_channelsIt indicates the number of channels for each tensor element
[in]data_typeData type to use for each tensor element

Definition at line 77 of file TensorInfo.cpp.

References TensorInfo::init().

78  : TensorInfo()
79 {
81 }
Shape of a tensor.
Definition: TensorShape.h:39
size_t num_channels() const override
The number of channels for each tensor element.
Definition: TensorInfo.h:258
DataType data_type() const override
Data type used for each element of the tensor.
Definition: TensorInfo.h:270
void init(Format format)
Initialize the tensor info with just a format.
Definition: TensorInfo.cpp:109
TensorInfo()
Default constructor.
Definition: TensorInfo.cpp:37

◆ TensorInfo() [9/12]

TensorInfo ( const TensorShape tensor_shape,
size_t  num_channels,
DataType  data_type 
)

Constructor.

Parameters
[in]tensor_shapeIt specifies the size for each dimension of the tensor in number of elements.
[in]num_channelsIt indicates the number of channels for each tensor element
[in]data_typeData type to use for each tensor element

Definition at line 83 of file TensorInfo.cpp.

References TensorInfo::init().

84  : TensorInfo()
85 {
86  init(tensor_shape, num_channels, data_type);
87 }
size_t num_channels() const override
The number of channels for each tensor element.
Definition: TensorInfo.h:258
DataType data_type() const override
Data type used for each element of the tensor.
Definition: TensorInfo.h:270
void init(Format format)
Initialize the tensor info with just a format.
Definition: TensorInfo.cpp:109
TensorInfo()
Default constructor.
Definition: TensorInfo.cpp:37

◆ TensorInfo() [10/12]

TensorInfo ( const TensorShape tensor_shape,
size_t  num_channels,
DataType  data_type,
DataLayout  data_layout 
)

Constructor.

Parameters
[in]tensor_shapeIt specifies the size for each dimension of the tensor in number of elements.
[in]num_channelsIt indicates the number of channels for each tensor element
[in]data_typeData type to use for each tensor element
[in]data_layoutThe data layout setting for the tensor data.

Definition at line 96 of file TensorInfo.cpp.

References TensorInfo::data_layout(), and TensorInfo::init().

97  : TensorInfo()
98 {
99  init(tensor_shape, num_channels, data_type);
100  _data_layout = data_layout;
101 }
size_t num_channels() const override
The number of channels for each tensor element.
Definition: TensorInfo.h:258
DataLayout data_layout() const override
Get the data layout of the tensor.
Definition: TensorInfo.h:315
DataType data_type() const override
Data type used for each element of the tensor.
Definition: TensorInfo.h:270
void init(Format format)
Initialize the tensor info with just a format.
Definition: TensorInfo.cpp:109
TensorInfo()
Default constructor.
Definition: TensorInfo.cpp:37

◆ TensorInfo() [11/12]

TensorInfo ( const TensorShape tensor_shape,
size_t  num_channels,
DataType  data_type,
QuantizationInfo  quantization_info 
)

Constructor.

Parameters
[in]tensor_shapeIt specifies the size for each dimension of the tensor in number of elements.
[in]num_channelsIt indicates the number of channels for each tensor element
[in]data_typeData type to use for each tensor element
[in]quantization_infoThe quantization settings for the tensor data.

Definition at line 89 of file TensorInfo.cpp.

References TensorInfo::init().

90  : TensorInfo()
91 {
92  init(tensor_shape, num_channels, data_type);
93  _quantization_info = std::move(quantization_info);
94 }
size_t num_channels() const override
The number of channels for each tensor element.
Definition: TensorInfo.h:258
DataType data_type() const override
Data type used for each element of the tensor.
Definition: TensorInfo.h:270
void init(Format format)
Initialize the tensor info with just a format.
Definition: TensorInfo.cpp:109
TensorInfo()
Default constructor.
Definition: TensorInfo.cpp:37

◆ TensorInfo() [12/12]

TensorInfo ( const HOGInfo hog_info,
unsigned int  width,
unsigned int  height 
)

Constructor.

Parameters
[in]hog_infoHOG's metadata used to allocate normalized HOG space
[in]widthWidth of the 2D tensor where the HOG descriptor will be computed on
[in]heightHeight of the 2D tensor where the HOG descriptor will be computed on

Definition at line 103 of file TensorInfo.cpp.

References TensorInfo::init().

104  : TensorInfo()
105 {
106  init(hog_info, width, height);
107 }
void init(Format format)
Initialize the tensor info with just a format.
Definition: TensorInfo.cpp:109
TensorInfo()
Default constructor.
Definition: TensorInfo.cpp:37

Member Function Documentation

◆ auto_padding()

bool auto_padding ( )
overridevirtual

Update the offset to the first element and the strides to automatically computed values.

Note
The padding used by this method is really conservative so that the tensor can be used for most functions.
Returns
True if the strides or the offset to the first element have changed.

Implements ITensorInfo.

Definition at line 224 of file TensorInfo.cpp.

References ARM_COMPUTE_ERROR_ON, BorderSize::bottom, arm_compute::compute_strides(), TensorInfo::element_size(), TensorInfo::extend_padding(), BorderSize::left, Dimensions< T >::num_dimensions(), TensorInfo::padding(), BorderSize::right, BorderSize::top, and TensorShape::total_size().

Referenced by Pyramid::init_auto_padding(), CLPyramid::init_auto_padding(), CLMultiImage::init_auto_padding(), MultiImage::init_auto_padding(), and TensorInfo::init_auto_padding().

225 {
226  ARM_COMPUTE_ERROR_ON(!_is_resizable);
227 
228  // Some kernels compute 32 elements at the time, worst case scenario they
229  // will read 32 values after the last element
230  const size_t extra_pad_x = _tensor_shape.num_dimensions() < 1 ? 0 : 32;
231  const size_t pad_x = _tensor_shape.num_dimensions() < 1 ? 0 : 4;
232  const size_t pad_y = _tensor_shape.num_dimensions() < 2 ? 0 : 4;
233 
234  return extend_padding(PaddingSize(pad_y, pad_x + extra_pad_x, pad_y, pad_x));
235 }
bool extend_padding(const PaddingSize &padding) override
Update the offset to the first element, the strides and the total size.
Definition: TensorInfo.cpp:281
#define ARM_COMPUTE_ERROR_ON(cond)
If the condition is true then an error message is printed and an exception thrown.
Definition: Error.h:466
BorderSize PaddingSize
Container for 2D padding size.
Definition: Types.h:382
unsigned int num_dimensions() const
Returns the effective dimensionality of the tensor.
Definition: Dimensions.h:143

◆ clone()

◆ data_layout()

DataLayout data_layout ( ) const
inlineoverridevirtual

Get the data layout of the tensor.

Returns
A DataLayout containing the layout data information.

Implements ITensorInfo.

Definition at line 315 of file TensorInfo.h.

Referenced by GCAccessor::data_layout(), CLAccessor::data_layout(), TensorInfo::set_data_layout(), and TensorInfo::TensorInfo().

316  {
317  return _data_layout;
318  }

◆ data_type()

DataType data_type ( ) const
inlineoverridevirtual

◆ dimension() [1/2]

size_t dimension ( size_t  index) const
inlineoverridevirtual

Return the size of the requested dimension.

Parameters
[in]indexIndex of the dimension
Returns
Dimension of the requested dimension

Implements ITensorInfo.

Definition at line 233 of file TensorInfo.h.

Referenced by CLMeanStdDev::configure(), and CLLaplacianReconstruct::configure().

234  {
235  return _tensor_shape[index];
236  }

◆ dimension() [2/2]

size_t dimension ( DataLayoutDimension  dimension) const
inlineoverridevirtual

Return the size of the requested data layout dimension.

Parameters
[in]dimensionDataLayoutDimension of the dimension
Returns
Dimension of the requested dimension

Implements ITensorInfo.

Definition at line 237 of file TensorInfo.h.

References arm_compute::get_data_layout_dimension_index().

238  {
239  return get_data_layout_dimension_index(_data_layout, dimension);
240  }
size_t dimension(size_t index) const override
Return the size of the requested dimension.
Definition: TensorInfo.h:233
size_t get_data_layout_dimension_index(const DataLayout data_layout, const DataLayoutDimension data_layout_dimension)
Get the index of the given dimension.
Definition: Helpers.inl:193

◆ element_size()

size_t element_size ( ) const
inlineoverridevirtual

Element size in bytes calculated as data_size() * num_channels()

Returns
The size of one element in bytes

Implements ITensorInfo.

Definition at line 250 of file TensorInfo.h.

References arm_compute::data_size_from_type().

Referenced by TensorInfo::auto_padding(), GCAccessor::element_size(), CLAccessor::element_size(), and CLQLSTMLayer::prepare().

251  {
252  return data_size_from_type(_data_type) * _num_channels;
253  }
size_t data_size_from_type(DataType data_type)
The size in bytes of the data type.
Definition: Utils.h:106

◆ extend_padding()

bool extend_padding ( const PaddingSize padding)
overridevirtual

Update the offset to the first element, the strides and the total size.

Note
This function can only increase the offset, strides and total size.
Parameters
[in]paddingPadding around the XY plane in number of elements.
Returns
True if the strides, offset and total size have changed.

Implements ITensorInfo.

Definition at line 281 of file TensorInfo.cpp.

References ARM_COMPUTE_ERROR_ON, BorderSize::bottom, BorderSize::left, BorderSize::right, and BorderSize::top.

Referenced by TensorInfo::auto_padding(), and arm_compute::test::validation::DATA_TEST_CASE().

282 {
283  ARM_COMPUTE_ERROR_ON(!_is_resizable);
284 
285  bool updated = false;
286 
287  if(padding.top > _padding.top)
288  {
289  _padding.top = padding.top;
290  updated = true;
291  }
292 
293  if(padding.right > _padding.right)
294  {
295  _padding.right = padding.right;
296  updated = true;
297  }
298 
299  if(padding.bottom > _padding.bottom)
300  {
301  _padding.bottom = padding.bottom;
302  updated = true;
303  }
304 
305  if(padding.left > _padding.left)
306  {
307  _padding.left = padding.left;
308  updated = true;
309  }
310 
311  std::tie(_strides_in_bytes, _offset_first_element_in_bytes, _total_size) = calculate_padding_requirements(_padding);
312 
313  return updated;
314 }
unsigned int top
top of the border
Definition: Types.h:375
#define ARM_COMPUTE_ERROR_ON(cond)
If the condition is true then an error message is printed and an exception thrown.
Definition: Error.h:466
unsigned int bottom
bottom of the border
Definition: Types.h:377
unsigned int left
left of the border
Definition: Types.h:378
unsigned int right
right of the border
Definition: Types.h:376

◆ format()

Format format ( ) const
inlineoverridevirtual

Colour format of the image.

Returns
Colour format of the image

Implements ITensorInfo.

Definition at line 274 of file TensorInfo.h.

Referenced by GCAccessor::format(), CLAccessor::format(), TensorAllocator::init(), TensorInfo::init(), TensorInfo::init_auto_padding(), and TensorInfo::set_format().

275  {
276  return _format;
277  }

◆ has_padding()

bool has_padding ( ) const
inlineoverridevirtual

Checks if the tensor has been allocated with padding or not.

Returns
True if padding is allocated in the tensor, otherwise false.

Implements ITensorInfo.

Definition at line 286 of file TensorInfo.h.

References BorderSize::empty().

287  {
288  return !_padding.empty();
289  }
constexpr bool empty() const
Check if the entire border is zero.
Definition: Types.h:300

◆ init() [1/7]

void init ( Format  format)

Initialize the tensor info with just a format.

Can be used for automatic derivation of the shape by the function.

Parameters
[in]formatSingle plane format of the tensor.

Definition at line 109 of file TensorInfo.cpp.

Referenced by NEWinogradConvolutionLayer::configure(), NECannyEdge::configure(), CLCannyEdge::configure(), NEHarrisCorners::configure(), arm_compute::test::validation::DATA_TEST_CASE(), TensorAllocator::init(), TensorInfo::init(), and TensorInfo::TensorInfo().

110 {
111  init(TensorShape(), format);
112 }
Shape of a tensor.
Definition: TensorShape.h:39
Format format() const override
Colour format of the image.
Definition: TensorInfo.h:274
void init(Format format)
Initialize the tensor info with just a format.
Definition: TensorInfo.cpp:109

◆ init() [2/7]

void init ( const TensorShape tensor_shape,
Format  format 
)

Initialize the metadata structure with the given parameters.

Parameters
[in]tensor_shapeSize for each dimension of the tensor in number of elements.
[in]formatSingle plane format of the tensor.

Definition at line 114 of file TensorInfo.cpp.

References arm_compute::data_type_from_format(), TensorInfo::format(), TensorInfo::init(), TensorInfo::num_channels(), arm_compute::num_channels_from_format(), and type.

115 {
118 
119  init(tensor_shape, num_channels, type);
120 
121  _format = format;
122 }
size_t num_channels() const override
The number of channels for each tensor element.
Definition: TensorInfo.h:258
size_t num_channels_from_format(Format format)
Return the number of channels for a given single-planar pixel format.
Definition: Utils.h:486
decltype(strategy::transforms) typedef type
Format format() const override
Colour format of the image.
Definition: TensorInfo.h:274
DataType data_type_from_format(Format format)
Return the data type used by a given single-planar pixel format.
Definition: Utils.h:219
void init(Format format)
Initialize the tensor info with just a format.
Definition: TensorInfo.cpp:109
DataType
Available data types.
Definition: Types.h:77

◆ init() [3/7]

void init ( const TensorShape tensor_shape,
Format  format,
const Strides strides_in_bytes,
size_t  offset_first_element_in_bytes,
size_t  total_size_in_bytes 
)

Initialize the metadata structure with the given parameters.

Parameters
[in]tensor_shapeSize for each dimension of the tensor in number of elements.
[in]formatSingle plane format of the tensor.
[in]strides_in_bytesStride in bytes for accessing each dimension of the tensor.
[in]offset_first_element_in_bytesOffset in bytes from the beginning of memory allocation to access the first element.
[in]total_size_in_bytesSize in bytes of the memory allocation (including the offset to the first element).

Definition at line 124 of file TensorInfo.cpp.

References arm_compute::data_type_from_format(), TensorInfo::format(), TensorInfo::init(), TensorInfo::num_channels(), arm_compute::num_channels_from_format(), and type.

127 {
130 
131  init(tensor_shape, num_channels, type, strides_in_bytes, offset_first_element_in_bytes, total_size_in_bytes);
132 
133  _format = format;
134 }
size_t num_channels() const override
The number of channels for each tensor element.
Definition: TensorInfo.h:258
size_t num_channels_from_format(Format format)
Return the number of channels for a given single-planar pixel format.
Definition: Utils.h:486
decltype(strategy::transforms) typedef type
Format format() const override
Colour format of the image.
Definition: TensorInfo.h:274
DataType data_type_from_format(Format format)
Return the data type used by a given single-planar pixel format.
Definition: Utils.h:219
void init(Format format)
Initialize the tensor info with just a format.
Definition: TensorInfo.cpp:109
size_t offset_first_element_in_bytes() const override
The offset from the beginning of the memory allocation to the first element of the tensor...
Definition: TensorInfo.h:245
DataType
Available data types.
Definition: Types.h:77

◆ init() [4/7]

void init ( size_t  num_channels,
DataType  data_type 
)

Initialize the tensor info with just a format.

Can be used for automatic derivation of the shape by the function.

Parameters
[in]num_channelsDesired number of channels for each tensor element.
[in]data_typeData type to use for each tensor element.

Definition at line 136 of file TensorInfo.cpp.

References TensorInfo::init().

137 {
139 }
Shape of a tensor.
Definition: TensorShape.h:39
size_t num_channels() const override
The number of channels for each tensor element.
Definition: TensorInfo.h:258
DataType data_type() const override
Data type used for each element of the tensor.
Definition: TensorInfo.h:270
void init(Format format)
Initialize the tensor info with just a format.
Definition: TensorInfo.cpp:109

◆ init() [5/7]

void init ( const TensorShape tensor_shape,
size_t  num_channels,
DataType  data_type 
)

Initialize the metadata structure with the given parameters.

Parameters
[in]tensor_shapeSize for each dimension of the tensor in number of elements.
[in]num_channelsDesired number of channels for each tensor element.
[in]data_typeData type to use for each tensor element.

Definition at line 141 of file TensorInfo.cpp.

References ARM_COMPUTE_ERROR_ON, TensorInfo::data_type(), TensorInfo::num_channels(), TensorInfo::set_tensor_shape(), and arm_compute::UNKNOWN.

142 {
144 
145  _data_type = data_type;
146  _num_channels = num_channels;
147  _format = Format::UNKNOWN;
148 
149  set_tensor_shape(tensor_shape);
150 }
size_t num_channels() const override
The number of channels for each tensor element.
Definition: TensorInfo.h:258
#define ARM_COMPUTE_ERROR_ON(cond)
If the condition is true then an error message is printed and an exception thrown.
Definition: Error.h:466
DataType data_type() const override
Data type used for each element of the tensor.
Definition: TensorInfo.h:270
ITensorInfo & set_tensor_shape(const TensorShape &shape) override
Set the shape of an already initialized tensor.
Definition: TensorInfo.cpp:352

◆ init() [6/7]

void init ( const TensorShape tensor_shape,
size_t  num_channels,
DataType  data_type,
const Strides strides_in_bytes,
size_t  offset_first_element_in_bytes,
size_t  total_size_in_bytes 
)

Initialize the metadata structure with the given parameters.

Parameters
[in]tensor_shapeSize for each dimension of the tensor in number of elements.
[in]num_channelsDesired number of channels for each tensor element.
[in]data_typeData type to use for each tensor element.
[in]strides_in_bytesStride in bytes for accessing each dimension of the tensor.
[in]offset_first_element_in_bytesOffset in bytes from the beginning of memory allocation to access the first element.
[in]total_size_in_bytesSize in bytes of the memory allocation (including the offset to the first element).

Definition at line 152 of file TensorInfo.cpp.

References ARM_COMPUTE_ERROR_ON, TensorInfo::data_type(), TensorInfo::num_channels(), TensorInfo::offset_first_element_in_bytes(), TensorInfo::strides_in_bytes(), TensorInfo::tensor_shape(), and arm_compute::UNKNOWN.

155 {
157 
158  _data_type = data_type;
159  _num_channels = num_channels;
160  _format = Format::UNKNOWN;
161  _tensor_shape = tensor_shape;
162  _offset_first_element_in_bytes = offset_first_element_in_bytes;
163  _strides_in_bytes = strides_in_bytes;
164  _total_size = total_size_in_bytes;
165 
166  _valid_region = ValidRegion{ Coordinates(), _tensor_shape };
167 }
size_t num_channels() const override
The number of channels for each tensor element.
Definition: TensorInfo.h:258
#define ARM_COMPUTE_ERROR_ON(cond)
If the condition is true then an error message is printed and an exception thrown.
Definition: Error.h:466
const Strides & strides_in_bytes() const override
The strides in bytes for accessing each dimension of the tensor.
Definition: TensorInfo.h:241
DataType data_type() const override
Data type used for each element of the tensor.
Definition: TensorInfo.h:270
Coordinates of an item.
Definition: Coordinates.h:37
size_t offset_first_element_in_bytes() const override
The offset from the beginning of the memory allocation to the first element of the tensor...
Definition: TensorInfo.h:245
Container for valid region of a window.
Definition: Types.h:188
const TensorShape & tensor_shape() const override
Size for each dimension of the tensor.
Definition: TensorInfo.h:262

◆ init() [7/7]

void init ( const HOGInfo hog_info,
unsigned int  width,
unsigned int  height 
)

Initialize the metadata structure for the given HOG's metadata.

Parameters
[in]hog_infoHOG's metadata used to allocate normalized HOG space
[in]widthWidth of the 2D tensor where the HOG descriptor will be computed on
[in]heightHeight of the 2D tensor where the HOG descriptor will be computed on

Definition at line 169 of file TensorInfo.cpp.

References Size2D::area(), arm_compute::F32, Size2D::height, TensorInfo::init(), HOGInfo::num_bins(), HOGInfo::num_block_positions_per_image(), HOGInfo::num_cells_per_block(), TensorInfo::num_channels(), and Size2D::width.

170 {
171  // Number of cells for each block
172  const Size2D num_cells_per_block = hog_info.num_cells_per_block();
173 
174  // Tensor Size = (Number of horizontal block positions) * (Number of vertical block positions)
175  const Size2D num_block_positions_per_img = hog_info.num_block_positions_per_image(Size2D(width, height));
176 
177  // Number of tensor channels = (Number of cells per block) * (Number of bins per cell)
178  const size_t num_channels = num_cells_per_block.area() * hog_info.num_bins();
179 
180  init(TensorShape(num_block_positions_per_img.width, num_block_positions_per_img.height), num_channels, DataType::F32);
181 }
size_t num_bins() const
The number of histogram bins for each cell.
Definition: HOGInfo.cpp:111
Shape of a tensor.
Definition: TensorShape.h:39
size_t num_channels() const override
The number of channels for each tensor element.
Definition: TensorInfo.h:258
1 channel, 1 F32 per channel
size_t height
Height of the image region or rectangle.
Definition: Size2D.h:90
Size2D num_cells_per_block() const
Calculates the number of cells for each block.
Definition: HOGInfo.cpp:67
void init(Format format)
Initialize the tensor info with just a format.
Definition: TensorInfo.cpp:109
size_t width
Width of the image region or rectangle.
Definition: Size2D.h:89
Size2D num_block_positions_per_image(const Size2D &image_size) const
Calculates the number of block positions for the given image size.
Definition: HOGInfo.cpp:83
Class for specifying the size of an image or rectangle.
Definition: Size2D.h:34
size_t area() const
The area of the image or rectangle calculated as (width * height)
Definition: Size2D.h:53

◆ init_auto_padding() [1/3]

size_t init_auto_padding ( const TensorShape tensor_shape,
Format  format 
)

Initialize the metadata structure for the given tensor shape and single-plane format, (Padding is automatically calculated)

Note
The padding used by this method is really conservative so that the tensor can be used for most functions.
Parameters
[in]tensor_shapeIt specifies the size for each dimension of the tensor in number of elements
[in]formatSingle plane format of the image.
Returns
Total allocation size including padding in bytes.

Definition at line 183 of file TensorInfo.cpp.

References arm_compute::data_type_from_format(), TensorInfo::format(), TensorInfo::num_channels(), arm_compute::num_channels_from_format(), TensorInfo::total_size(), and type.

Referenced by TensorInfo::init_auto_padding().

184 {
187  size_t total_size = init_auto_padding(tensor_shape, num_channels, type);
188 
189  _format = format;
190 
191  return total_size;
192 }
size_t init_auto_padding(const TensorShape &tensor_shape, Format format)
Initialize the metadata structure for the given tensor shape and single-plane format, (Padding is automatically calculated)
Definition: TensorInfo.cpp:183
size_t num_channels() const override
The number of channels for each tensor element.
Definition: TensorInfo.h:258
size_t num_channels_from_format(Format format)
Return the number of channels for a given single-planar pixel format.
Definition: Utils.h:486
decltype(strategy::transforms) typedef type
Format format() const override
Colour format of the image.
Definition: TensorInfo.h:274
size_t total_size() const override
Returns the total size of the tensor in bytes.
Definition: TensorInfo.h:278
DataType data_type_from_format(Format format)
Return the data type used by a given single-planar pixel format.
Definition: Utils.h:219
DataType
Available data types.
Definition: Types.h:77

◆ init_auto_padding() [2/3]

size_t init_auto_padding ( const TensorShape tensor_shape,
size_t  num_channels,
DataType  data_type 
)

Initialize the metadata structure for the given tensor shape, number of channels and data type.

(Padding is automatically calculated)

Note
The padding used by this method is really conservative so that the tensor can be used for most functions.
Parameters
[in]tensor_shapeIt specifies the size for each dimension of the tensor in number of elements
[in]num_channelsIt indicates the number of channels for each tensor element
[in]data_typeData type to use for each tensor element
Returns
Total allocation size including padding in bytes.

Definition at line 194 of file TensorInfo.cpp.

References ARM_COMPUTE_ERROR_ON, TensorInfo::auto_padding(), TensorInfo::data_type(), TensorInfo::num_channels(), TensorInfo::tensor_shape(), and arm_compute::UNKNOWN.

195 {
197 
198  _data_type = data_type;
199  _num_channels = num_channels;
200  _format = Format::UNKNOWN;
201  _tensor_shape = tensor_shape;
202 
203  _valid_region = ValidRegion{ Coordinates(), _tensor_shape };
204 
205  auto_padding();
206 
207  return _total_size;
208 }
size_t num_channels() const override
The number of channels for each tensor element.
Definition: TensorInfo.h:258
#define ARM_COMPUTE_ERROR_ON(cond)
If the condition is true then an error message is printed and an exception thrown.
Definition: Error.h:466
bool auto_padding() override
Update the offset to the first element and the strides to automatically computed values.
Definition: TensorInfo.cpp:224
DataType data_type() const override
Data type used for each element of the tensor.
Definition: TensorInfo.h:270
Coordinates of an item.
Definition: Coordinates.h:37
Container for valid region of a window.
Definition: Types.h:188
const TensorShape & tensor_shape() const override
Size for each dimension of the tensor.
Definition: TensorInfo.h:262

◆ init_auto_padding() [3/3]

size_t init_auto_padding ( const HOGInfo hog_info,
unsigned int  width,
unsigned int  height 
)

Initialize the metadata structure for the given HOG's metadata.

Note
init_auto_padding will be used for the tensor initialization.
Parameters
[in]hog_infoHOG's metadata used to allocate normalized HOG space
[in]widthWidth of the 2D tensor where the HOG descriptor will be computed on
[in]heightHeight of the 2D tensor where the HOG descriptor will be computed on
Returns
Total allocation size including padding in bytes.

Definition at line 210 of file TensorInfo.cpp.

References Size2D::area(), arm_compute::F32, Size2D::height, TensorInfo::init_auto_padding(), HOGInfo::num_bins(), HOGInfo::num_block_positions_per_image(), HOGInfo::num_cells_per_block(), TensorInfo::num_channels(), and Size2D::width.

211 {
212  // Number of cells for each block
213  const Size2D num_cells_per_block = hog_info.num_cells_per_block();
214 
215  // Tensor Size = (Number of horizontal block positions) * (Number of vertical block positions)
216  const Size2D num_block_positions_per_img = hog_info.num_block_positions_per_image(Size2D(width, height));
217 
218  // Number of tensor channels = (Number of cells per block) * (Number of bins per cell)
219  const size_t num_channels = num_cells_per_block.area() * hog_info.num_bins();
220 
221  return init_auto_padding(TensorShape(num_block_positions_per_img.width, num_block_positions_per_img.height), num_channels, DataType::F32);
222 }
size_t num_bins() const
The number of histogram bins for each cell.
Definition: HOGInfo.cpp:111
Shape of a tensor.
Definition: TensorShape.h:39
size_t init_auto_padding(const TensorShape &tensor_shape, Format format)
Initialize the metadata structure for the given tensor shape and single-plane format, (Padding is automatically calculated)
Definition: TensorInfo.cpp:183
size_t num_channels() const override
The number of channels for each tensor element.
Definition: TensorInfo.h:258
1 channel, 1 F32 per channel
size_t height
Height of the image region or rectangle.
Definition: Size2D.h:90
Size2D num_cells_per_block() const
Calculates the number of cells for each block.
Definition: HOGInfo.cpp:67
size_t width
Width of the image region or rectangle.
Definition: Size2D.h:89
Size2D num_block_positions_per_image(const Size2D &image_size) const
Calculates the number of block positions for the given image size.
Definition: HOGInfo.cpp:83
Class for specifying the size of an image or rectangle.
Definition: Size2D.h:34
size_t area() const
The area of the image or rectangle calculated as (width * height)
Definition: Size2D.h:53

◆ is_dynamic()

bool is_dynamic ( ) const
inlineoverridevirtual

Flag indicating whether the shape of the tensor is dynamic, meaning that it can change on kernel/function execution.

Returns
True if its dynamic else false

Implements ITensorInfo.

Definition at line 294 of file TensorInfo.h.

References enable_tracing::find().

295  {
296  return std::find(std::cbegin(_dims_state), std::cend(_dims_state), -1) != std::cend(_dims_state);
297  }
def find(path, pattern)

◆ is_resizable()

bool is_resizable ( ) const
inlineoverridevirtual

Flag indicating whether the size of the tensor can be changed.

Returns
True if the tensor size can be changed.

Implements ITensorInfo.

Definition at line 290 of file TensorInfo.h.

Referenced by TensorInfo::set_is_resizable(), and arm_compute::test::validation::TEST_CASE().

291  {
292  return _is_resizable;
293  }

◆ num_channels()

size_t num_channels ( ) const
inlineoverridevirtual

The number of channels for each tensor element.

Returns
The number of channels for each tensor element

Implements ITensorInfo.

Definition at line 258 of file TensorInfo.h.

Referenced by arm_compute::test::validation::reference::hog_multi_detection(), TensorInfo::init(), TensorInfo::init_auto_padding(), GCAccessor::num_channels(), CLAccessor::num_channels(), arm_compute::operator<<(), TensorInfo::set_num_channels(), and arm_compute::test::validation::TEST_CASE().

259  {
260  return _num_channels;
261  }

◆ num_dimensions()

size_t num_dimensions ( ) const
inlineoverridevirtual

The number of dimensions of the tensor (rank)

Returns
The number of dimensions of the tensor (rank)

Implements ITensorInfo.

Definition at line 254 of file TensorInfo.h.

References Dimensions< T >::num_dimensions().

Referenced by CLLaplacianReconstruct::configure(), CLGaussianPyramidHalf::configure(), and CLGaussianPyramidOrb::configure().

255  {
256  return _tensor_shape.num_dimensions();
257  }
unsigned int num_dimensions() const
Returns the effective dimensionality of the tensor.
Definition: Dimensions.h:143

◆ offset_element_in_bytes()

int32_t offset_element_in_bytes ( const Coordinates pos) const
overridevirtual

The offset in bytes from the beginning of the memory allocation to access the element at position (x, y, z ...)

Parameters
[in]posVector with the coordinates of the element to access. The size of this vector must be equal to the number of dimensions of the tensor
Returns
Offset in bytes from the beginning of the memory allocation to access the element (x, y, z, ...)

Implements ITensorInfo.

Definition at line 402 of file TensorInfo.cpp.

References ARM_COMPUTE_ERROR_ON_COORDINATES_DIMENSIONS_GTE, Dimensions< T >::num_dimensions(), and offset().

Referenced by CLMeanStdDev::configure(), TensorAllocator::init(), and TensorInfo::offset_first_element_in_bytes().

403 {
405 
406  int32_t offset = _offset_first_element_in_bytes;
407 
408  for(size_t i = 0; i < _tensor_shape.num_dimensions(); ++i)
409  {
410  offset += pos[i] * _strides_in_bytes[i];
411  }
412 
413  return offset;
414 }
__global uchar * offset(const Image *img, int x, int y)
Get the pointer position of a Image.
Definition: helpers.h:846
unsigned int num_dimensions() const
Returns the effective dimensionality of the tensor.
Definition: Dimensions.h:143
#define ARM_COMPUTE_ERROR_ON_COORDINATES_DIMENSIONS_GTE(p, md)
Definition: Validate.h:244

◆ offset_first_element_in_bytes()

size_t offset_first_element_in_bytes ( ) const
inlineoverridevirtual

The offset from the beginning of the memory allocation to the first element of the tensor.

This can be used to access efficiently elements in a 2D tensor

Returns
The offset in bytes to access the first element of the tensor.

Implements ITensorInfo.

Definition at line 245 of file TensorInfo.h.

References TensorInfo::offset_element_in_bytes().

Referenced by TensorAllocator::init(), and TensorInfo::init().

246  {
247  return _offset_first_element_in_bytes;
248  }

◆ operator=() [1/2]

TensorInfo& operator= ( const TensorInfo )
default

Allow instances of this class to be copied.

◆ operator=() [2/2]

TensorInfo& operator= ( TensorInfo &&  )
default

Allow instances of this class to be moved.

◆ padding()

PaddingSize padding ( ) const
inlineoverridevirtual

Padding of tensor.

Returns
Padding.

Implements ITensorInfo.

Definition at line 282 of file TensorInfo.h.

Referenced by TensorInfo::auto_padding(), arm_compute::test::validation::DATA_TEST_CASE(), GCAccessor::padding(), CLAccessor::padding(), and arm_compute::test::validation::TEST_CASE().

283  {
284  return _padding;
285  }

◆ quantization_info()

QuantizationInfo quantization_info ( ) const
inlineoverridevirtual

Get the quantization settings (scale and offset) of the tensor.

Returns
A QuantizationInfo containing the scale and offset.

Implements ITensorInfo.

Definition at line 311 of file TensorInfo.h.

Referenced by CLQLSTMLayer::configure(), GCAccessor::quantization_info(), CLAccessor::quantization_info(), TensorInfo::set_quantization_info(), and arm_compute::test::validation::TEST_CASE().

312  {
313  return _quantization_info;
314  }

◆ reset_padding()

ITensorInfo & reset_padding ( )
overridevirtual

Resets the padding settings of the tensor.

Returns
Reference to this ITensorInfo object

Implements ITensorInfo.

Definition at line 392 of file TensorInfo.cpp.

References arm_compute::UNKNOWN.

393 {
394  _padding = PaddingSize();
395  if(((_format != Format::UNKNOWN) || (_data_type != DataType::UNKNOWN)) && _total_size != 0)
396  {
397  std::tie(_strides_in_bytes, _offset_first_element_in_bytes, _total_size) = calculate_padding_requirements(_padding);
398  }
399  return *this;
400 }
BorderSize PaddingSize
Container for 2D padding size.
Definition: Types.h:382

◆ set_data_layout()

ITensorInfo & set_data_layout ( const DataLayout data_layout)
overridevirtual

Set the data layout of the tensor.

Parameters
[in]data_layoutDataLayout containing the layout data information.
Returns
Reference to this ITensorInfo object

Implements ITensorInfo.

Definition at line 386 of file TensorInfo.cpp.

References TensorInfo::data_layout().

Referenced by NEDeconvolutionLayer::configure(), CLFFTConvolutionLayer::configure(), CLDirectDeconvolutionLayer::configure(), NEDeviceBackend::create_tensor(), GCDeviceBackend::create_tensor(), CLDeviceBackend::create_tensor(), arm_compute::test::create_tensor(), and NumPyAccessor::NumPyAccessor().

387 {
388  _data_layout = data_layout;
389  return *this;
390 }
DataLayout data_layout() const override
Get the data layout of the tensor.
Definition: TensorInfo.h:315

◆ set_data_type()

ITensorInfo & set_data_type ( DataType  data_type)
overridevirtual

Set the data type to the specified value.

Warning
This resets the format to UNKNOWN.
Parameters
[in]data_typeThe new data type.
Returns
Reference to this ITensorInfo object

Implements ITensorInfo.

Definition at line 321 of file TensorInfo.cpp.

References TensorInfo::data_type(), TensorInfo::set_tensor_shape(), TensorInfo::tensor_shape(), and arm_compute::UNKNOWN.

Referenced by NEReduceMean::configure(), CLReduceMean::configure(), CpuLogits1DSoftmaxKernel< IS_LOG >::configure(), arm_compute::test::validation::TEST_CASE(), NEL2NormalizeLayer::validate(), NEReductionOperation::validate(), CLArgMinMaxLayer::validate(), CLL2NormalizeLayer::validate(), CLReductionOperation::validate(), NEGenerateProposalsLayer::validate(), CLGEMMDeconvolutionLayer::validate(), and CLGenerateProposalsLayer::validate().

322 {
323  _data_type = data_type;
324  _format = Format::UNKNOWN;
325  return set_tensor_shape(tensor_shape()); // Force total size and strides to update
326 }
DataType data_type() const override
Data type used for each element of the tensor.
Definition: TensorInfo.h:270
ITensorInfo & set_tensor_shape(const TensorShape &shape) override
Set the shape of an already initialized tensor.
Definition: TensorInfo.cpp:352
const TensorShape & tensor_shape() const override
Size for each dimension of the tensor.
Definition: TensorInfo.h:262

◆ set_format()

ITensorInfo & set_format ( Format  format)
overridevirtual

Set the format of an already initialized tensor.

Note
If the data type has already been configured (i.e. not UNKNOWN) it must match the new format. If data type hasn't been configured it will be based on the format.
Parameters
[in]formatSingle-plane format of the tensor.
Returns
Reference to this ITensorInfo object

Implements ITensorInfo.

Definition at line 335 of file TensorInfo.cpp.

References ARM_COMPUTE_ERROR_ON, arm_compute::data_type_from_format(), TensorInfo::format(), arm_compute::num_channels_from_format(), and arm_compute::UNKNOWN.

336 {
337  _format = format;
338 
339  if(_data_type == DataType::UNKNOWN)
340  {
341  _num_channels = num_channels_from_format(format);
342  _data_type = data_type_from_format(format);
343  }
344  else
345  {
348  }
349  return *this;
350 }
#define ARM_COMPUTE_ERROR_ON(cond)
If the condition is true then an error message is printed and an exception thrown.
Definition: Error.h:466
size_t num_channels_from_format(Format format)
Return the number of channels for a given single-planar pixel format.
Definition: Utils.h:486
Format format() const override
Colour format of the image.
Definition: TensorInfo.h:274
DataType data_type_from_format(Format format)
Return the data type used by a given single-planar pixel format.
Definition: Utils.h:219

◆ set_is_resizable()

ITensorInfo& set_is_resizable ( bool  is_resizable)
inlineoverridevirtual

Set the flag whether the tensor size can be changed.

Parameters
[in]is_resizableFlag that marks the tensor if it can be changed or not.
Returns
Reference to this ITensorInfo object

Implements ITensorInfo.

Definition at line 298 of file TensorInfo.h.

References TensorInfo::is_resizable().

Referenced by TensorAllocator::allocate(), GCTensorAllocator::allocate(), CLTensorAllocator::allocate(), TensorAllocator::free(), GCTensorAllocator::free(), CLTensorAllocator::free(), TensorAllocator::import_memory(), CLTensorAllocator::import_memory(), and TensorAllocator::~TensorAllocator().

299  {
300  _is_resizable = is_resizable;
301  return *this;
302  }
bool is_resizable() const override
Flag indicating whether the size of the tensor can be changed.
Definition: TensorInfo.h:290

◆ set_num_channels()

ITensorInfo & set_num_channels ( int  num_channels)
overridevirtual

Set the number of channels to the specified value.

Warning
This resets the format to UNKNOWN.
Parameters
[in]num_channelsNew number of channels.
Returns
Reference to this ITensorInfo object

Implements ITensorInfo.

Definition at line 328 of file TensorInfo.cpp.

References TensorInfo::num_channels(), and arm_compute::UNKNOWN.

329 {
330  _num_channels = num_channels;
331  _format = Format::UNKNOWN;
332  return *this;
333 }
size_t num_channels() const override
The number of channels for each tensor element.
Definition: TensorInfo.h:258

◆ set_quantization_info()

ITensorInfo & set_quantization_info ( const QuantizationInfo quantization_info)
overridevirtual

Set the quantization settings (scale and offset) of the tensor.

Parameters
[in]quantization_infoQuantizationInfo containing the scale and offset
Returns
Reference to this ITensorInfo object

Implements ITensorInfo.

Definition at line 380 of file TensorInfo.cpp.

References TensorInfo::quantization_info().

Referenced by CpuLogits1DSoftmaxKernel< IS_LOG >::configure(), CLGEMMDeconvolutionLayer::configure(), CLLSTMLayerQuantized::configure(), NEGEMMConvolutionLayer::configure(), CLGEMMConvolutionLayer::configure(), arm_compute::test::create_tensor(), NELSTMLayerQuantized::validate(), CLLSTMLayerQuantized::validate(), and NEGEMMConvolutionLayer::validate().

381 {
382  _quantization_info = quantization_info;
383  return *this;
384 }
QuantizationInfo quantization_info() const override
Get the quantization settings (scale and offset) of the tensor.
Definition: TensorInfo.h:311

◆ set_tensor_dims_state()

ITensorInfo & set_tensor_dims_state ( const TensorDimsState state)
overridevirtual

Set the state for each dimension of the tensor.

This sets the state of each dimension of the shape in terms of dynamic behavior using -1 where appropriate. The index in the state is a 1 to 1 mapping with the shape dimension index. For example if you want to express [?, 3, 3] as a dynamic input then [-1, 3, 3] has to be set as a state

Parameters
[in]stateTensor dimensions state
Returns
Reference to this ITensorInfo object

Implements ITensorInfo.

Definition at line 374 of file TensorInfo.cpp.

375 {
376  _dims_state = state;
377  return *this;
378 }

◆ set_tensor_shape()

ITensorInfo & set_tensor_shape ( const TensorShape shape)
overridevirtual

Set the shape of an already initialized tensor.

Warning
Changing the shape requires to recompute the strides and is therefore only possible if the tensor hasn't been allocated yet.
Parameters
[in]shapeNew tensor shape.
Returns
Reference to this ITensorInfo object

Implements ITensorInfo.

Definition at line 352 of file TensorInfo.cpp.

References arm_compute::compute_strides(), Dimensions< T >::num_dimensions(), and arm_compute::test::validation::shape.

Referenced by NEQLSTMLayer::configure(), CLQLSTMLayer::configure(), TensorInfo::init(), TensorInfo::set_data_type(), arm_compute::test::validation::TEST_CASE(), NEQLSTMLayer::validate(), and CLQLSTMLayer::validate().

353 {
354  _tensor_shape = shape;
355  _offset_first_element_in_bytes = 0;
356  _strides_in_bytes = compute_strides(*this);
357 
358  if(_tensor_shape.num_dimensions() == 0)
359  {
360  _total_size = _strides_in_bytes[0];
361  }
362  else
363  {
364  const unsigned int idx_last_dimension = _tensor_shape.num_dimensions() - 1;
365  _total_size = static_cast<size_t>(_tensor_shape[idx_last_dimension]) * _strides_in_bytes[idx_last_dimension];
366  }
367 
368  std::tie(_strides_in_bytes, _offset_first_element_in_bytes, _total_size) = calculate_padding_requirements(_padding);
369 
370  _valid_region = ValidRegion{ Coordinates(), _tensor_shape };
371  return *this;
372 }
Strides compute_strides(const ITensorInfo &info, T stride_x, Ts &&... fixed_strides)
Create a strides object based on the provided strides and the tensor dimensions.
Definition: Utils.h:41
Coordinates of an item.
Definition: Coordinates.h:37
unsigned int num_dimensions() const
Returns the effective dimensionality of the tensor.
Definition: Dimensions.h:143
Container for valid region of a window.
Definition: Types.h:188

◆ set_valid_region()

void set_valid_region ( const ValidRegion valid_region)
inlineoverridevirtual

Set the valid region of the tensor.

Parameters
[in]valid_regionValid region to set.

Implements ITensorInfo.

Definition at line 307 of file TensorInfo.h.

References TensorInfo::valid_region().

308  {
309  _valid_region = valid_region;
310  }
ValidRegion valid_region() const override
Valid region of the tensor.
Definition: TensorInfo.h:303

◆ strides_in_bytes()

const Strides& strides_in_bytes ( ) const
inlineoverridevirtual

The strides in bytes for accessing each dimension of the tensor.

Returns
Strides in bytes for each tensor dimension

Implements ITensorInfo.

Definition at line 241 of file TensorInfo.h.

Referenced by TensorAllocator::init(), and TensorInfo::init().

242  {
243  return _strides_in_bytes;
244  }

◆ tensor_dims_state()

const TensorDimsState& tensor_dims_state ( ) const
inlineoverridevirtual

State of each dimension of the tensor shape.

Returns
A vector with the state for each dimension of the tensor, where -1 specifies dynamic dimension

Implements ITensorInfo.

Definition at line 266 of file TensorInfo.h.

267  {
268  return _dims_state;
269  }

◆ tensor_shape()

◆ total_size()

size_t total_size ( ) const
inlineoverridevirtual

Returns the total size of the tensor in bytes.

Returns
Total size of the tensor in bytes.

Implements ITensorInfo.

Definition at line 278 of file TensorInfo.h.

Referenced by CLTensorAllocator::allocate(), TensorAllocator::init(), TensorInfo::init_auto_padding(), CLQLSTMLayer::prepare(), CLFastCorners::run(), GCAccessor::size(), CLAccessor::size(), and arm_compute::test::validation::TEST_CASE().

279  {
280  return _total_size;
281  }

◆ valid_region()

ValidRegion valid_region ( ) const
inlineoverridevirtual

Valid region of the tensor.

All elements in the valid region have defined values, i.e. are not undefined.

Returns
The valid region.

Implements ITensorInfo.

Definition at line 303 of file TensorInfo.h.

Referenced by TensorInfo::set_valid_region().

304  {
305  return _valid_region;
306  }

The documentation for this class was generated from the following files: