TensorFlow provides several operations that you can use to perform common
math computations on tensor segments.
Here a segmentation is a partitioning of a tensor along
the first dimension, i.e. it defines a mapping from the first dimension onto
`segment_ids`

. The `segment_ids`

tensor should be the size of
the first dimension, `d0`

, with consecutive IDs in the range `0`

to `k`

,
where `k<d0`

.
In particular, a segmentation of a matrix tensor is a mapping of rows to
segments.

For example:

```
c = tf.constant([[1,2,3,4], [-1,-2,-3,-4], [5,6,7,8]])
tf.segment_sum(c, tf.constant([0, 0, 1]))
==> [[0 0 0 0]
[5 6 7 8]]
```

`tf.segment_sum(data, segment_ids, name=None)`

Computes the sum along segments of a tensor.

Read the section on Segmentation for an explanation of segments.

Computes a tensor such that
\(output_i = \sum_j data_j\) where sum is over `j`

such
that `segment_ids[j] == i`

.

##### Args:

: A`data`

`Tensor`

. Must be one of the following types:`float32`

,`float64`

,`int64`

,`int32`

,`uint8`

,`uint16`

,`int16`

,`int8`

,`complex64`

,`complex128`

,`qint8`

,`quint8`

,`qint32`

,`half`

.: A`segment_ids`

`Tensor`

. Must be one of the following types:`int32`

,`int64`

. A 1-D tensor whose rank is equal to the rank of`data`

's first dimension. Values should be sorted and can be repeated.: A name for the operation (optional).`name`

##### Returns:

A `Tensor`

. Has the same type as `data`

.
Has same shape as data, except for dimension 0 which
has size `k`

, the number of segments.

`tf.segment_prod(data, segment_ids, name=None)`

Computes the product along segments of a tensor.

Read the section on Segmentation for an explanation of segments.

Computes a tensor such that
\(output_i = \prod_j data_j\) where the product is over `j`

such
that `segment_ids[j] == i`

.

##### Args:

: A`data`

`Tensor`

. Must be one of the following types:`float32`

,`float64`

,`int64`

,`int32`

,`uint8`

,`uint16`

,`int16`

,`int8`

,`complex64`

,`complex128`

,`qint8`

,`quint8`

,`qint32`

,`half`

.: A`segment_ids`

`Tensor`

. Must be one of the following types:`int32`

,`int64`

. A 1-D tensor whose rank is equal to the rank of`data`

's first dimension. Values should be sorted and can be repeated.: A name for the operation (optional).`name`

##### Returns:

A `Tensor`

. Has the same type as `data`

.
Has same shape as data, except for dimension 0 which
has size `k`

, the number of segments.

`tf.segment_min(data, segment_ids, name=None)`

Computes the minimum along segments of a tensor.

Read the section on Segmentation for an explanation of segments.

Computes a tensor such that
\(output_i = \min_j(data_j)\) where `min`

is over `j`

such
that `segment_ids[j] == i`

.

##### Args:

: A`data`

`Tensor`

. Must be one of the following types:`float32`

,`float64`

,`int32`

,`int64`

,`uint8`

,`int16`

,`int8`

,`uint16`

,`half`

.: A`segment_ids`

`Tensor`

. Must be one of the following types:`int32`

,`int64`

. A 1-D tensor whose rank is equal to the rank of`data`

's first dimension. Values should be sorted and can be repeated.: A name for the operation (optional).`name`

##### Returns:

A `Tensor`

. Has the same type as `data`

.
Has same shape as data, except for dimension 0 which
has size `k`

, the number of segments.

`tf.segment_max(data, segment_ids, name=None)`

Computes the maximum along segments of a tensor.

Read the section on Segmentation for an explanation of segments.

Computes a tensor such that
\(output_i = \max_j(data_j)\) where `max`

is over `j`

such
that `segment_ids[j] == i`

.

##### Args:

: A`data`

`Tensor`

. Must be one of the following types:`float32`

,`float64`

,`int32`

,`int64`

,`uint8`

,`int16`

,`int8`

,`uint16`

,`half`

.: A`segment_ids`

`Tensor`

. Must be one of the following types:`int32`

,`int64`

. A 1-D tensor whose rank is equal to the rank of`data`

's first dimension. Values should be sorted and can be repeated.: A name for the operation (optional).`name`

##### Returns:

`Tensor`

. Has the same type as `data`

.
Has same shape as data, except for dimension 0 which
has size `k`

, the number of segments.

`tf.segment_mean(data, segment_ids, name=None)`

Computes the mean along segments of a tensor.

Read the section on Segmentation for an explanation of segments.

Computes a tensor such that
\(output_i = \frac{\sum_j data_j}{N}\) where `mean`

is
over `j`

such that `segment_ids[j] == i`

and `N`

is the total number of
values summed.

##### Args:

: A`data`

`Tensor`

. Must be one of the following types:`float32`

,`float64`

,`int32`

,`int64`

,`uint8`

,`int16`

,`int8`

,`uint16`

,`half`

.: A`segment_ids`

`Tensor`

. Must be one of the following types:`int32`

,`int64`

. A 1-D tensor whose rank is equal to the rank of`data`

's first dimension. Values should be sorted and can be repeated.: A name for the operation (optional).`name`

##### Returns:

`Tensor`

. Has the same type as `data`

.
Has same shape as data, except for dimension 0 which
has size `k`

, the number of segments.

`tf.unsorted_segment_sum(data, segment_ids, num_segments, name=None)`

Computes the sum along segments of a tensor.

Read the section on Segmentation for an explanation of segments.

Computes a tensor such that
`(output[i] = sum_{j...} data[j...]`

where the sum is over tuples `j...`

such
that `segment_ids[j...] == i`

. Unlike `SegmentSum`

, `segment_ids`

need not be sorted and need not cover all values in the full
range of valid values.

If the sum is empty for a given segment ID `i`

, `output[i] = 0`

.

`num_segments`

should equal the number of distinct segment IDs.

##### Args:

: A`data`

`Tensor`

. Must be one of the following types:`float32`

,`float64`

,`int64`

,`int32`

,`uint8`

,`uint16`

,`int16`

,`int8`

,`complex64`

,`complex128`

,`qint8`

,`quint8`

,`qint32`

,`half`

.: A`segment_ids`

`Tensor`

. Must be one of the following types:`int32`

,`int64`

. A tensor whose shape is a prefix of`data.shape`

.: A`num_segments`

`Tensor`

of type`int32`

.: A name for the operation (optional).`name`

##### Returns:

A `Tensor`

. Has the same type as `data`

.
Has same shape as data, except for the first `segment_ids.rank`

dimensions, which are replaced with a single dimension which has size
`num_segments`

.

`tf.sparse_segment_sum(data, indices, segment_ids, name=None)`

Computes the sum along sparse segments of a tensor.

Read the section on Segmentation for an explanation of segments.

Like `SegmentSum`

, but `segment_ids`

can have rank less than `data`

's first
dimension, selecting a subset of dimension 0, specified by `indices`

.

For example:

```
c = tf.constant([[1,2,3,4], [-1,-2,-3,-4], [5,6,7,8]])
# Select two rows, one segment.
tf.sparse_segment_sum(c, tf.constant([0, 1]), tf.constant([0, 0]))
==> [[0 0 0 0]]
# Select two rows, two segment.
tf.sparse_segment_sum(c, tf.constant([0, 1]), tf.constant([0, 1]))
==> [[ 1 2 3 4]
[-1 -2 -3 -4]]
# Select all rows, two segments.
tf.sparse_segment_sum(c, tf.constant([0, 1, 2]), tf.constant([0, 0, 1]))
==> [[0 0 0 0]
[5 6 7 8]]
# Which is equivalent to:
tf.segment_sum(c, tf.constant([0, 0, 1]))
```

##### Args:

: A`data`

`Tensor`

. Must be one of the following types:`float32`

,`float64`

,`int32`

,`int64`

,`uint8`

,`int16`

,`int8`

,`uint16`

,`half`

.: A`indices`

`Tensor`

. Must be one of the following types:`int32`

,`int64`

. A 1-D tensor. Has same rank as`segment_ids`

.: A`segment_ids`

`Tensor`

of type`int32`

. A 1-D tensor. Values should be sorted and can be repeated.: A name for the operation (optional).`name`

##### Returns:

`Tensor`

. Has the same type as `data`

.
Has same shape as data, except for dimension 0 which
has size `k`

, the number of segments.

`tf.sparse_segment_mean(data, indices, segment_ids, name=None)`

Computes the mean along sparse segments of a tensor.

Read the section on Segmentation for an explanation of segments.

Like `SegmentMean`

, but `segment_ids`

can have rank less than `data`

's first
dimension, selecting a subset of dimension 0, specified by `indices`

.

##### Args:

: A`data`

`Tensor`

. Must be one of the following types:`float32`

,`float64`

.: A`indices`

`Tensor`

. Must be one of the following types:`int32`

,`int64`

. A 1-D tensor. Has same rank as`segment_ids`

.: A`segment_ids`

`Tensor`

of type`int32`

. A 1-D tensor. Values should be sorted and can be repeated.: A name for the operation (optional).`name`

##### Returns:

`Tensor`

. Has the same type as `data`

.
Has same shape as data, except for dimension 0 which
has size `k`

, the number of segments.

`tf.sparse_segment_sqrt_n(data, indices, segment_ids, name=None)`

Computes the sum along sparse segments of a tensor divided by the sqrt of N.

N is the size of the segment being reduced.

Read the section on Segmentation for an explanation of segments.

##### Args:

: A`data`

`Tensor`

. Must be one of the following types:`float32`

,`float64`

.: A`indices`

`Tensor`

. Must be one of the following types:`int32`

,`int64`

. A 1-D tensor. Has same rank as`segment_ids`

.: A`segment_ids`

`Tensor`

of type`int32`

. A 1-D tensor. Values should be sorted and can be repeated.: A name for the operation (optional).`name`

##### Returns:

`Tensor`

. Has the same type as `data`

.
Has same shape as data, except for dimension 0 which
has size `k`

, the number of segments.