NonZero

Versioned name : NonZero-3

Category : Condition

Short description : NonZero returns the indices of the non-zero elements of the input tensor.

Detailed description : NonZero returns the indices of the non-zero elements of the input tensor (in row-major order - by dimension).

  • The output tensor has shape [rank(input), num_non_zero].

  • For example, for the tensor [[1, 0], [1, 1]] the output will be [[0, 1, 1], [0, 0, 1]].

  • The output is a collection of tuples, each tuple has rank(input) elements and contains indices for a single non-zero element.

  • The i ‘th element of each output dimension is a part of i ‘th tuple.

  • In given example the tuples would be: [0, 0], [1, 0], [1, 1].

Attributes

  • output_type

    • Description : the output tensor type

    • Range of values : i64 or i32

    • Type : string

    • Default value : “i64”

    • Required : no

Inputs :

  • 1 : A tensor of type T and arbitrary shape. Required.

Outputs :

  • 1 : tensor with indices of non-zero elements of shape [rank(data), num_non_zero] of type T_OUT.

Types

  • T : any type.

  • T_OUT : Depending on output_type attribute can be int64 or int32.

Example

<layer ... type="NonZero">
    <data output_type="i64"/>
    <input>
        <port id="0">
            <dim>3</dim>
            <dim>10</dim>
            <dim>100</dim>
            <dim>200</dim>
        </port>
     </input>
    <output>
        <port id="1">
            <dim>4</dim>
            <dim>600000</dim>
        </port>
    </output>
</layer>