View source on GitHub
|
Compute the cumulative sum of the tensor x along axis.
tf.math.cumsum(
x, axis=0, exclusive=False, reverse=False, name=None
)
By default, this op performs an inclusive cumsum, which means that the first element of the input is identical to the first element of the output: For example:
# tf.cumsum([a, b, c]) # [a, a + b, a + b + c]x = tf.constant([2, 4, 6, 8])tf.cumsum(x)<tf.Tensor: shape=(4,), dtype=int32,numpy=array([ 2, 6, 12, 20], dtype=int32)>
# using varying `axis` valuesy = tf.constant([[2, 4, 6, 8], [1,3,5,7]])tf.cumsum(y, axis=0)<tf.Tensor: shape=(2, 4), dtype=int32, numpy=array([[ 2, 4, 6, 8],[ 3, 7, 11, 15]], dtype=int32)>tf.cumsum(y, axis=1)<tf.Tensor: shape=(2, 4), dtype=int32, numpy=array([[ 2, 6, 12, 20],[ 1, 4, 9, 16]], dtype=int32)>
By setting the exclusive kwarg to True, an exclusive cumsum is performed
instead:
# tf.cumsum([a, b, c], exclusive=True) => [0, a, a + b]x = tf.constant([2, 4, 6, 8])tf.cumsum(x, exclusive=True)<tf.Tensor: shape=(4,), dtype=int32,numpy=array([ 0, 2, 6, 12], dtype=int32)>
By setting the reverse kwarg to True, the cumsum is performed in the
opposite direction:
# tf.cumsum([a, b, c], reverse=True) # [a + b + c, b + c, c]x = tf.constant([2, 4, 6, 8])tf.cumsum(x, reverse=True)<tf.Tensor: shape=(4,), dtype=int32,numpy=array([20, 18, 14, 8], dtype=int32)>
This is more efficient than using separate tf.reverse ops.
The reverse and exclusive kwargs can also be combined:
# tf.cumsum([a, b, c], exclusive=True, reverse=True) # [b + c, c, 0]x = tf.constant([2, 4, 6, 8])tf.cumsum(x, exclusive=True, reverse=True)<tf.Tensor: shape=(4,), dtype=int32,numpy=array([18, 14, 8, 0], dtype=int32)>
Returns | |
|---|---|
A Tensor. Has the same type as x.
|
View source on GitHub