ArmNN
 23.08
StridedSliceDescriptor Struct Reference

A StridedSliceDescriptor for the StridedSliceLayer. More...

#include <Descriptors.hpp>

Inheritance diagram for StridedSliceDescriptor:
[legend]
Collaboration diagram for StridedSliceDescriptor:
[legend]

Public Member Functions

 StridedSliceDescriptor (const std::vector< int > &begin, const std::vector< int > &end, const std::vector< int > &stride)
 
 StridedSliceDescriptor ()
 
bool operator== (const StridedSliceDescriptor &rhs) const
 
int GetStartForAxis (const TensorShape &inputShape, unsigned int axis) const
 
int GetStopForAxis (const TensorShape &inputShape, unsigned int axis, int startForAxis) const
 
- Public Member Functions inherited from BaseDescriptor
virtual bool IsNull () const
 
virtual ~BaseDescriptor ()=default
 

Public Attributes

std::vector< int > m_Begin
 Begin values for the input that will be sliced. More...
 
std::vector< int > m_End
 End values for the input that will be sliced. More...
 
std::vector< int > m_Stride
 Stride values for the input that will be sliced. More...
 
int32_t m_BeginMask
 Begin mask value. More...
 
int32_t m_EndMask
 End mask value. More...
 
int32_t m_ShrinkAxisMask
 Shrink axis mask value. If set, the nth specification shrinks the dimensionality by 1. More...
 
int32_t m_EllipsisMask
 Ellipsis mask value. More...
 
int32_t m_NewAxisMask
 New axis mask value. More...
 
DataLayout m_DataLayout
 The data layout to be used (NCHW, NHWC). More...
 

Detailed Description

A StridedSliceDescriptor for the StridedSliceLayer.

Definition at line 1282 of file Descriptors.hpp.

Constructor & Destructor Documentation

◆ StridedSliceDescriptor() [1/2]

StridedSliceDescriptor ( const std::vector< int > &  begin,
const std::vector< int > &  end,
const std::vector< int > &  stride 
)
inline

Definition at line 1284 of file Descriptors.hpp.

1287  : m_Begin(begin)
1288  , m_End(end)
1289  , m_Stride(stride)
1290  , m_BeginMask(0)
1291  , m_EndMask(0)
1292  , m_ShrinkAxisMask(0)
1293  , m_EllipsisMask(0)
1294  , m_NewAxisMask(0)
1296  {}

References armnn::NCHW.

◆ StridedSliceDescriptor() [2/2]

Definition at line 1298 of file Descriptors.hpp.

1299  : StridedSliceDescriptor({}, {}, {})
1300  {}

Member Function Documentation

◆ GetStartForAxis()

int GetStartForAxis ( const TensorShape inputShape,
unsigned int  axis 
) const

Definition at line 384 of file Descriptors.cpp.

386 {
387  int start = m_Begin[axis];
388 
389  if (m_BeginMask & (1 << axis))
390  {
391  if (m_Stride[axis] > 0)
392  {
393  start = std::numeric_limits<int>::min();
394  }
395  else
396  {
397  start = std::numeric_limits<int>::max();
398  }
399  }
400 
401  const int axisSize = armnn::numeric_cast<int>(inputShape[axis]);
402  if (start < 0)
403  {
404  start += (axisSize);
405  }
406 
407  return std::max(0, std::min(start, axisSize - 1));
408 
409 }

References StridedSliceDescriptor::m_Begin, StridedSliceDescriptor::m_BeginMask, and StridedSliceDescriptor::m_Stride.

Referenced by armnnUtils::CalculateStridedSliceOutputTensorInfo(), StridedSliceLayer::InferOutputShapes(), and armnn::StridedSlice().

◆ GetStopForAxis()

int GetStopForAxis ( const TensorShape inputShape,
unsigned int  axis,
int  startForAxis 
) const

Definition at line 411 of file Descriptors.cpp.

414 {
415 
416  if (m_ShrinkAxisMask & (1 << axis))
417  {
418  return startForAxis + 1;
419  }
420 
421  int stop = m_End[axis];
422 
423  if (m_EndMask & (1 << axis))
424  {
425  if (m_Stride[axis] > 0)
426  {
427  stop = std::numeric_limits<int>::max();
428  }
429  else
430  {
431  stop = std::numeric_limits<int>::min();
432  }
433  }
434 
435  const int axisSize = armnn::numeric_cast<int>(inputShape[axis]);
436  if (stop < 0)
437  {
438  stop += axisSize;
439  }
440 
441  return m_Stride[axis] > 0 ? std::max(0, std::min(stop, axisSize)) :
442  std::max(-1, std::min(stop, axisSize - 1));
443 
444 }

References StridedSliceDescriptor::m_End, StridedSliceDescriptor::m_EndMask, StridedSliceDescriptor::m_ShrinkAxisMask, and StridedSliceDescriptor::m_Stride.

Referenced by armnnUtils::CalculateStridedSliceOutputTensorInfo(), StridedSliceLayer::InferOutputShapes(), and armnn::StridedSlice().

◆ operator==()

bool operator== ( const StridedSliceDescriptor rhs) const
inline

Definition at line 1302 of file Descriptors.hpp.

1303  {
1304  return m_Begin == rhs.m_Begin &&
1305  m_End == rhs.m_End &&
1306  m_Stride == rhs.m_Stride &&
1307  m_BeginMask == rhs.m_BeginMask &&
1308  m_EndMask == rhs.m_EndMask &&
1309  m_ShrinkAxisMask == rhs.m_ShrinkAxisMask &&
1310  m_EllipsisMask == rhs.m_EllipsisMask &&
1311  m_NewAxisMask == rhs.m_NewAxisMask &&
1312  m_DataLayout == rhs.m_DataLayout;
1313  }

References StridedSliceDescriptor::m_Begin, StridedSliceDescriptor::m_BeginMask, StridedSliceDescriptor::m_DataLayout, StridedSliceDescriptor::m_EllipsisMask, StridedSliceDescriptor::m_End, StridedSliceDescriptor::m_EndMask, StridedSliceDescriptor::m_NewAxisMask, StridedSliceDescriptor::m_ShrinkAxisMask, and StridedSliceDescriptor::m_Stride.

Member Data Documentation

◆ m_Begin

◆ m_BeginMask

◆ m_DataLayout

DataLayout m_DataLayout

The data layout to be used (NCHW, NHWC).

Definition at line 1342 of file Descriptors.hpp.

Referenced by StridedSliceDescriptor::operator==(), and StringifyLayerParameters< StridedSliceDescriptor >::Serialize().

◆ m_EllipsisMask

◆ m_End

◆ m_EndMask

◆ m_NewAxisMask

int32_t m_NewAxisMask

New axis mask value.

If set, the begin, end and stride is disregarded and a new 1 dimension is inserted to this location of the output tensor.

Definition at line 1339 of file Descriptors.hpp.

Referenced by StridedSliceLayer::CreateWorkload(), StridedSliceDescriptor::operator==(), and StringifyLayerParameters< StridedSliceDescriptor >::Serialize().

◆ m_ShrinkAxisMask

◆ m_Stride


The documentation for this struct was generated from the following files:
armnn::StridedSliceDescriptor::m_Begin
std::vector< int > m_Begin
Begin values for the input that will be sliced.
Definition: Descriptors.hpp:1321
armnn::StridedSliceDescriptor::m_EllipsisMask
int32_t m_EllipsisMask
Ellipsis mask value.
Definition: Descriptors.hpp:1336
armnn::StridedSliceDescriptor::m_BeginMask
int32_t m_BeginMask
Begin mask value.
Definition: Descriptors.hpp:1329
armnn::StridedSliceDescriptor::m_DataLayout
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
Definition: Descriptors.hpp:1342
armnn::StridedSliceDescriptor::StridedSliceDescriptor
StridedSliceDescriptor()
Definition: Descriptors.hpp:1298
armnn::StridedSliceDescriptor::m_EndMask
int32_t m_EndMask
End mask value.
Definition: Descriptors.hpp:1332
armnn::StridedSliceDescriptor::m_ShrinkAxisMask
int32_t m_ShrinkAxisMask
Shrink axis mask value. If set, the nth specification shrinks the dimensionality by 1.
Definition: Descriptors.hpp:1334
armnn::StridedSliceDescriptor::m_Stride
std::vector< int > m_Stride
Stride values for the input that will be sliced.
Definition: Descriptors.hpp:1325
std
Definition: BackendId.hpp:149
armnn::StridedSliceDescriptor::m_End
std::vector< int > m_End
End values for the input that will be sliced.
Definition: Descriptors.hpp:1323
armnn::StridedSliceDescriptor::m_NewAxisMask
int32_t m_NewAxisMask
New axis mask value.
Definition: Descriptors.hpp:1339
armnn::DataLayout::NCHW
@ NCHW