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>