StridedSlice

Versioned name: StridedSlice-1

Category: Data movement

Short description: StridedSlice extracts a strided slice of a tensor.

Attributes

  • begin_mask

    • Description: begin_mask is a bit mask. begin_mask[i] equal to 1 means that the corresponding dimension of the begin input is ignored and the ‘real’ beginning of the tensor is used along corresponding dimension.

    • Range of values: a list of 0 s and 1 s

    • Type: int[]

    • Default value: None

    • Required: yes

  • end_mask

    • Description: end_mask is a bit mask. If end_mask[i] is 1, the corresponding dimension of the end input is ignored and the real ‘end’ of the tensor is used along corresponding dimension.

    • Range of values: a list of 0 s and 1 s

    • Type: int[]

    • Default value: None

    • Required: yes

  • new_axis_mask

    • Description: new_axis_mask is a bit mask. If new_axis_mask[i] is 1, a length 1 dimension is inserted on the i-th position of input tensor.

    • Range of values: a list of 0 s and 1 s

    • Type: int[]

    • Default value: [0]

    • Required: no

  • shrink_axis_mask

    • Description: shrink_axis_mask is a bit mask. If shrink_axis_mask[i] is 1, the dimension on the i-th position is deleted.

    • Range of values: a list of 0 s and 1 s

    • Type: int[]

    • Default value: [0]

    • Required: no

  • ellipsis_mask

    • Description: ellipsis_mask is a bit mask. It inserts missing dimensions on a position of a non-zero bit.

    • Range of values: a list of 0 s and 1. Only one non-zero bit is allowed.

    • Type: int[]

    • Default value: [0]

    • Required: no

Inputs:

  • 1: data - input tensor to be sliced of type T and arbitrary shape. Required.

  • 2: begin - 1D tensor of type T_IND with begin indexes for input tensor slicing. Required. Out-of-bounds values are silently clamped. If begin_mask[i] is 1 , the value of begin[i] is ignored and the range of the appropriate dimension starts from 0. Negative values mean indexing starts from the end. For example, if data=[1,2,3], begin[0]=-1 means begin[0]=3.

  • 3: end - 1D tensor of type T_IND with end indexes for input tensor slicing. Required. Out-of-bounds values will be silently clamped. If end_mask[i] is 1, the value of end[i] is ignored and the full range of the appropriate dimension is used instead. Negative values mean indexing starts from the end. For example, if data=[1,2,3], end[0]=-1 means end[0]=3.

  • 4: stride - 1D tensor of type T_IND with strides. Optional.

Types

  • T: any supported type.

  • T_IND: any supported integer type.

Example Example of begin_mask & end_mask usage.

 <layer ... type="StridedSlice" ...>
     <data begin_mask="0,1,1" ellipsis_mask="0,0,0" end_mask="1,1,0" new_axis_mask="0,0,0" shrink_axis_mask="0,0,0"/>
     <input>
         <port id="0">
             <dim>2</dim>
             <dim>3</dim>
             <dim>4</dim>
         </port>
         <port id="1">
             <dim>2</dim> < !-- begin: [1, 0, 0] -->
         </port>
         <port id="2">
             <dim>2</dim> < !-- end: [0, 0, 2] -->
         </port>
         <port id="3">
             <dim>2</dim> < !-- stride: [1, 1, 1] -->
         </port>
     </input>
     <output>
         <port id="4">
             <dim>1</dim>
             <dim>3</dim>
             <dim>2</dim>
         </port>
     </output>
 </layer>

Example of new_axis_mask usage.

 <layer ... type="StridedSlice" ...>
     <data begin_mask="0,1,1" ellipsis_mask="0,0,0" end_mask="0,1,1" new_axis_mask="1,0,0" shrink_axis_mask="0,0,0"/>
     <input>
         <port id="0">
             <dim>2</dim>
             <dim>3</dim>
             <dim>4</dim>
         </port>
         <port id="1">
             <dim>2</dim>
         </port>
         <port id="2">
             <dim>2</dim>
         </port>
         <port id="3">
             <dim>2</dim>
         </port>
     </input>
     <output>
         <port id="4">
             <dim>1</dim>
             <dim>2</dim>
             <dim>3</dim>
             <dim>4</dim>
         </port>
     </output>
 </layer>

Example of shrink_axis_mask usage.

 <layer ... type="StridedSlice" ...>
     <data begin_mask="1,0,1,1,1" ellipsis_mask="0,0,0,0,0" end_mask="1,0,1,1,1" new_axis_mask="0,0,0,0,0" shrink_axis_mask="0,1,0,0,0"/>
     <input>
         <port id="0">
             <dim>1</dim>
             <dim>2</dim>
             <dim>384</dim>
             <dim>640</dim>
             <dim>8</dim>
         </port>
         <port id="1">
             <dim>5</dim>
         </port>
         <port id="2">
             <dim>5</dim>
         </port>
         <port id="3">
             <dim>5</dim>
         </port>
     </input>
     <output>
         <port id="4">
             <dim>1</dim>
             <dim>384</dim>
             <dim>640</dim>
             <dim>8</dim>
         </port>
     </output>
 </layer>