ArmNN
 25.11
Loading...
Searching...
No Matches
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.
std::vector< int > m_End
 End values for the input that will be sliced.
std::vector< int > m_Stride
 Stride values for the input that will be sliced.
int32_t m_BeginMask
 Begin mask value.
int32_t m_EndMask
 End mask value.
int32_t m_ShrinkAxisMask
 Shrink axis mask value. If set, the nth specification shrinks the dimensionality by 1.
int32_t m_EllipsisMask
 Ellipsis mask value.
int32_t m_NewAxisMask
 New axis mask value.
DataLayout m_DataLayout
 The data layout to be used (NCHW, NHWC).

Detailed Description

A StridedSliceDescriptor for the StridedSliceLayer.

Definition at line 1303 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 1305 of file Descriptors.hpp.

1308 : m_Begin(begin)
1309 , m_End(end)
1310 , m_Stride(stride)
1311 , m_BeginMask(0)
1312 , m_EndMask(0)
1313 , m_ShrinkAxisMask(0)
1314 , m_EllipsisMask(0)
1315 , m_NewAxisMask(0)
1316 , m_DataLayout(DataLayout::NCHW)
1317 {}

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

Referenced by operator==(), and StridedSliceDescriptor().

◆ StridedSliceDescriptor() [2/2]

Definition at line 1319 of file Descriptors.hpp.

1320 : StridedSliceDescriptor({}, {}, {})
1321 {}

References StridedSliceDescriptor().

Member Function Documentation

◆ GetStartForAxis()

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

Definition at line 393 of file Descriptors.cpp.

395{
396 int start = m_Begin[axis];
397
398 if (m_BeginMask & (1 << axis))
399 {
400 if (m_Stride[axis] > 0)
401 {
402 start = std::numeric_limits<int>::min();
403 }
404 else
405 {
406 start = std::numeric_limits<int>::max();
407 }
408 }
409
410 const int axisSize = armnn::numeric_cast<int>(inputShape[axis]);
411 if (start < 0)
412 {
413 start += (axisSize);
414 }
415
416 return std::max(0, std::min(start, axisSize - 1));
417
418}
std::enable_if_t< std::is_unsigned< Source >::value &&std::is_unsigned< Dest >::value, Dest > numeric_cast(Source source)

References m_Begin, m_BeginMask, m_Stride, and armnn::numeric_cast().

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

◆ GetStopForAxis()

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

Definition at line 420 of file Descriptors.cpp.

423{
424
425 if (m_ShrinkAxisMask & (1 << axis))
426 {
427 return startForAxis + 1;
428 }
429
430 int stop = m_End[axis];
431
432 if (m_EndMask & (1 << axis))
433 {
434 if (m_Stride[axis] > 0)
435 {
436 stop = std::numeric_limits<int>::max();
437 }
438 else
439 {
440 stop = std::numeric_limits<int>::min();
441 }
442 }
443
444 const int axisSize = armnn::numeric_cast<int>(inputShape[axis]);
445 if (stop < 0)
446 {
447 stop += axisSize;
448 }
449
450 return m_Stride[axis] > 0 ? std::max(0, std::min(stop, axisSize)) :
451 std::max(-1, std::min(stop, axisSize - 1));
452
453}

References m_End, m_EndMask, m_ShrinkAxisMask, m_Stride, and armnn::numeric_cast().

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

◆ operator==()

bool operator== ( const StridedSliceDescriptor & rhs) const
inline

Definition at line 1323 of file Descriptors.hpp.

1324 {
1325 return m_Begin == rhs.m_Begin &&
1326 m_End == rhs.m_End &&
1327 m_Stride == rhs.m_Stride &&
1328 m_BeginMask == rhs.m_BeginMask &&
1329 m_EndMask == rhs.m_EndMask &&
1330 m_ShrinkAxisMask == rhs.m_ShrinkAxisMask &&
1331 m_EllipsisMask == rhs.m_EllipsisMask &&
1332 m_NewAxisMask == rhs.m_NewAxisMask &&
1333 m_DataLayout == rhs.m_DataLayout;
1334 }

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

Member Data Documentation

◆ m_Begin

◆ m_BeginMask

int32_t m_BeginMask

◆ m_DataLayout

◆ 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 1360 of file Descriptors.hpp.

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

◆ m_ShrinkAxisMask

◆ m_Stride


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