CumSum

Versioned name : CumSum-3

Category : Arithmetic unary

Short description : CumSum performs cumulative summation of the input elements along the given axis.

Detailed description : CumSum performs cumulative summation of the input elements along the axis specified by the second input. By default, the j-th output element is the inclusive sum of the first j elements in the given sequence, and the first element in the sequence is copied to the output as is. In the exclusive mode the j-th output element is the sum of the first j-1 elements and the first element in the output sequence is 0. To perform the summation in the opposite direction of the axis, set reverse attribute to true.

Attributes :

  • exclusive

  • Description : If the attribute is set to true, then exclusive sums are returned, the j-th element is not included in the j-th sum. Otherwise, the inclusive sum of the first j elements for the j-th element is calculated.

    • Range of values :

      • false - include the top element

      • true - do not include the top element

    • Type : boolean

    • Default value : false

    • Required : no

  • reverse

    • Description : If set to true will perform the sums in reverse direction.

    • Range of values :

      • false - do not perform sums in reverse direction

      • true - perform sums in reverse direction

    • Type : boolean

    • Default value : false

    • Required : no

Inputs

  • 1 : A tensor of type T and rank greater or equal to 1. Required.

  • 2 : Axis index along which the cumulative sum is performed. A scalar of type T_AXIS. Negative value means counting dimensions from the back. Default value is 0. Optional.

Outputs

  • 1 : Output tensor with cumulative sums of the input elements. A tensor of type T of the same shape as the first input.

Types

  • T : any numeric type.

  • T_AXIS : int64 or int32.

Examples

Example 1

<layer ... type="CumSum" exclusive="0" reverse="0">
    <input>
        <port id="0">     <!-- input value is: [1., 2., 3., 4., 5.] -->
            <dim>5</dim>
        </port>
        <port id="1"/>     <!-- axis value is: 0 -->
    </input>
    <output>
        <port id="2">     <!-- output value is: [1., 3., 6., 10., 15.] -->
            <dim>5</dim>
        </port>
    </output>
</layer>

Example 2

<layer ... type="CumSum" exclusive="1" reverse="0">
    <input>
        <port id="0">     <!-- input value is: [1., 2., 3., 4., 5.] -->
            <dim>5</dim>
        </port>
        <port id="1"/>     <!-- axis value is: 0 -->
    </input>
    <output>
        <port id="2">     <!-- output value is: [0., 1., 3., 6., 10.] -->
            <dim>5</dim>
        </port>
    </output>
</layer>

Example 3

<layer ... type="CumSum" exclusive="0" reverse="1">
    <input>
        <port id="0">     <!-- input value is: [1., 2., 3., 4., 5.] -->
            <dim>5</dim>
        </port>
        <port id="1"/>     <!-- axis value is: 0 -->
    </input>
    <output>
        <port id="2">     <!-- output value is: [15., 14., 12., 9., 5.] -->
            <dim>5</dim>
        </port>
    </output>
</layer>

Example 4

<layer ... type="CumSum" exclusive="1" reverse="1">
    <input>
        <port id="0">     <!-- input value is: [1., 2., 3., 4., 5.] -->
            <dim>5</dim>
        </port>
        <port id="1"/>     <!-- axis value is: 0 -->
    </input>
    <output>
        <port id="2">     <!-- output value is: [14., 12., 9., 5., 0.] -->
            <dim>5</dim>
        </port>
    </output>
</layer>