# tensorflow::ops::SegmentProd Class Reference

# tensorflow::ops::SegmentProd

`#include <math_ops.h>`

Computes the product along segments of a tensor.

## Summary

Read [the section on segmentation](https://tensorflow.org/api_docs/python/tf/math#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`.

If the product is empty for a given segment ID `i`, `output[i] = 1`.

Caution: On CPU, values in `segment_ids` are always validated to be sorted, and an error is thrown for indices that are not increasing. On GPU, this does not throw an error for unsorted indices. On GPU, out-of-order indices result in safe but unspecified behavior, which may include treating out-of-order indices as the same as a smaller following index.


![](https://www.tensorflow.org/static/versions/r2.9/api_docs/cc/images/SegmentProd.png)

<br />

For example:

c = tf.constant(\[\[1,2,3,4\], \[4, 3, 2, 1\], \[5,6,7,8\]\]) tf.math.segment_prod(c, tf.constant(\[0, 0, 1\])).numpy() array(\[\[4, 6, 6, 4\], \[5, 6, 7, 8\]\], dtype=int32)

Args:

- scope: A [Scope](https://www.tensorflow.org/versions/r2.9/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope) object
- segment_ids: A 1-D tensor whose size is equal to the size of `data`'s first dimension. Values should be sorted and can be repeated.

<br />

Caution: The values are always validated to be sorted on CPU, never validated on GPU.

Returns:

- `https://www.tensorflow.org/versions/r2.9/api_docs/cc/class/tensorflow/output#classtensorflow_1_1_output`: Has same shape as data, except for dimension 0 which has size `k`, the number of segments.

<br />

| ### Constructors and Destructors ||
|---|---|
| `https://www.tensorflow.org/versions/r2.9/api_docs/cc/class/tensorflow/ops/segment-prod#classtensorflow_1_1ops_1_1_segment_prod_1aaa29c6154e234e016b12cd1090b92f35(const ::https://www.tensorflow.org/versions/r2.9/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope & scope, ::https://www.tensorflow.org/versions/r2.9/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input data, ::https://www.tensorflow.org/versions/r2.9/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input segment_ids)` ||

| ### Public attributes ||
|---|---|
| `https://www.tensorflow.org/versions/r2.9/api_docs/cc/class/tensorflow/ops/segment-prod#classtensorflow_1_1ops_1_1_segment_prod_1ac84b0698197c2bbb4314eb5bae40449a` | `https://www.tensorflow.org/versions/r2.9/api_docs/cc/class/tensorflow/operation#classtensorflow_1_1_operation` |
| `https://www.tensorflow.org/versions/r2.9/api_docs/cc/class/tensorflow/ops/segment-prod#classtensorflow_1_1ops_1_1_segment_prod_1ac9d3d5a23b913c1498c08f602603c920` | `::https://www.tensorflow.org/versions/r2.9/api_docs/cc/class/tensorflow/output#classtensorflow_1_1_output` |

| ### Public functions ||
|---|---|
| `https://www.tensorflow.org/versions/r2.9/api_docs/cc/class/tensorflow/ops/segment-prod#classtensorflow_1_1ops_1_1_segment_prod_1a1f6e38cb73fb96fc9c1033cce4caa6de() const ` | `::tensorflow::Node *` |
| `https://www.tensorflow.org/versions/r2.9/api_docs/cc/class/tensorflow/ops/segment-prod#classtensorflow_1_1ops_1_1_segment_prod_1a01f74b88504cb0e9f9e5c2da63373640() const ` |   |
| `https://www.tensorflow.org/versions/r2.9/api_docs/cc/class/tensorflow/ops/segment-prod#classtensorflow_1_1ops_1_1_segment_prod_1a0d47f6ebf4f51b71f39d114d128c7194() const ` |   |

## Public attributes

### operation

```
Operation operation
```

### output

```
::tensorflow::Output output
```

## Public functions

### SegmentProd

```
 SegmentProd(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input data,
  ::tensorflow::Input segment_ids
)
```

### node

```
::tensorflow::Node * node() const 
```

### operator::tensorflow::Input

```
 operator::tensorflow::Input() const 
```

### operator::tensorflow::Output

```
 operator::tensorflow::Output() const 
```