# tensorflow::ops::Cumprod

`#include <math_ops.h>`

Compute the cumulative product of the tensor `x` along `axis`.

## Summary

By default, this op performs an inclusive cumprod, which means that the first element of the input is identical to the first element of the output:


```
tf.cumprod([a, b, c])  # => [a, a * b, a * b * c]
```

<br />

By setting the `exclusive` kwarg to `True`, an exclusive cumprod is performed instead:


```
tf.cumprod([a, b, c], exclusive=True)  # => [1, a, a * b]
```

<br />

By setting the `reverse` kwarg to `True`, the cumprod is performed in the opposite direction:


```
tf.cumprod([a, b, c], reverse=True)  # => [a * b * c, b * c, c]
```

<br />

This is more efficient than using separate `tf.reverse` ops.

The `reverse` and `exclusive` kwargs can also be combined:


```
tf.cumprod([a, b, c], exclusive=True, reverse=True)  # => [b * c, c, 1]
```

<br />

Arguments:

- scope: A [Scope](https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope) object
- x: A `https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/tensor#classtensorflow_1_1_tensor`. Must be one of the following types: `float32`, `float64`, `int64`, `int32`, `uint8`, `uint16`, `int16`, `int8`, `complex64`, `complex128`, `qint8`, `quint8`, `qint32`, `half`.
- axis: A `https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/tensor#classtensorflow_1_1_tensor` of type `int32` (default: 0). Must be in the range `[-rank(x), rank(x))`.

<br />

Optional attributes (see `https://www.tensorflow.org/versions/r1.15/api_docs/cc/struct/tensorflow/ops/cumprod/attrs#structtensorflow_1_1ops_1_1_cumprod_1_1_attrs`):

- exclusive: If `True`, perform exclusive cumprod.
- reverse: A `bool` (default: False).

<br />

Returns:

- `https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/output#classtensorflow_1_1_output`: The out tensor.

<br />

| ### Constructors and Destructors ||
|---|---|
| `https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/ops/cumprod#classtensorflow_1_1ops_1_1_cumprod_1a5cf5eb762b0a395c784265be34cefca9(const ::https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope & scope, ::https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input x, ::https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input axis)` ||
| `https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/ops/cumprod#classtensorflow_1_1ops_1_1_cumprod_1af028aab7f34ea1aba5dd296b8cb2fdbc(const ::https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope & scope, ::https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input x, ::https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input axis, const https://www.tensorflow.org/versions/r1.15/api_docs/cc/struct/tensorflow/ops/cumprod/attrs#structtensorflow_1_1ops_1_1_cumprod_1_1_attrs & attrs)` ||

| ### Public attributes ||
|---|---|
| `https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/ops/cumprod#classtensorflow_1_1ops_1_1_cumprod_1a15918749b2c6a95b59853778fb5a449e` | `https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/operation#classtensorflow_1_1_operation` |
| `https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/ops/cumprod#classtensorflow_1_1ops_1_1_cumprod_1a993dbcb13834ecd895a4009ba5bdfb48` | `::https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/output#classtensorflow_1_1_output` |

| ### Public functions ||
|---|---|
| `https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/ops/cumprod#classtensorflow_1_1ops_1_1_cumprod_1abd920e1da9ceb0d441bb10250cc860cd() const ` | `::tensorflow::Node *` |
| `https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/ops/cumprod#classtensorflow_1_1ops_1_1_cumprod_1adc26a397e6b980247abf7fd333c0f389() const ` | ` `` ` |
| `https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/ops/cumprod#classtensorflow_1_1ops_1_1_cumprod_1acab6e7e1ab4245028ef1b8625859757a() const ` | ` `` ` |

| ### Public static functions ||
|---|---|
| `https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/ops/cumprod#classtensorflow_1_1ops_1_1_cumprod_1aa8984f96042955a9b2c08528a49df924(bool x)` | `https://www.tensorflow.org/versions/r1.15/api_docs/cc/struct/tensorflow/ops/cumprod/attrs#structtensorflow_1_1ops_1_1_cumprod_1_1_attrs` |
| `https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/ops/cumprod#classtensorflow_1_1ops_1_1_cumprod_1aafe8da11faadd6cca28c310fac8aec6d(bool x)` | `https://www.tensorflow.org/versions/r1.15/api_docs/cc/struct/tensorflow/ops/cumprod/attrs#structtensorflow_1_1ops_1_1_cumprod_1_1_attrs` |

| ### Structs ||
|---|---|
| [tensorflow::ops::Cumprod::Attrs](https://www.tensorflow.org/versions/r1.15/api_docs/cc/struct/tensorflow/ops/cumprod/attrs) | Optional attribute setters for [Cumprod](https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/ops/cumprod#classtensorflow_1_1ops_1_1_cumprod). |

## Public attributes

### operation

```
Operation operation
```

### out

```
::tensorflow::Output out
```

## Public functions

### Cumprod

```
 Cumprod(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input x,
  ::tensorflow::Input axis
)
```

### Cumprod

```
 Cumprod(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input x,
  ::tensorflow::Input axis,
  const Cumprod::Attrs & attrs
)
```

### node

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

### operator::tensorflow::Input

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

### operator::tensorflow::Output

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

## Public static functions

### Exclusive

```
Attrs Exclusive(
  bool x
)
```

### Reverse

```
Attrs Reverse(
  bool x
)
```