# tensorflow::ops::SparseSoftmax

`#include <sparse_ops.h>`

Applies softmax to a batched N-D `SparseTensor`.

## Summary

The inputs represent an N-D SparseTensor with logical shape `[..., B, C]` (where `N >= 2`), and with indices sorted in the canonical lexicographic order.

This op is equivalent to applying the normal `tf.nn.softmax()` to each innermost logical submatrix with shape `[B, C]`, but with the catch that *the implicitly zero elements do not participate*. Specifically, the algorithm is equivalent to the following:

(1) Applies `tf.nn.softmax()` to a densified view of each innermost submatrix with shape `[B, C]`, along the size-C dimension; (2) Masks out the original implicitly-zero locations; (3) Renormalizes the remaining elements.

Hence, the `SparseTensor` result has exactly the same non-zero indices and shape.

Arguments:

- scope: A [Scope](https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope) object
- sp_indices: 2-D. `NNZ x R` matrix with the indices of non-empty values in a SparseTensor, in canonical ordering.
- sp_values: 1-D. `NNZ` non-empty values corresponding to `sp_indices`.
- sp_shape: 1-D. Shape of the input SparseTensor.

<br />

Returns:

- `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/output#classtensorflow_1_1_output`: 1-D. The `NNZ` values for the result `SparseTensor`.

<br />

| ### Constructors and Destructors ||
|---|---|
| `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-softmax#classtensorflow_1_1ops_1_1_sparse_softmax_1a64ec9c22eb2f8d50797cfb39eb94009d(const ::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/scope#classtensorflow_1_1_scope & scope, ::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input sp_indices, ::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input sp_values, ::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/input#classtensorflow_1_1_input sp_shape)` ||

| ### Public attributes ||
|---|---|
| `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-softmax#classtensorflow_1_1ops_1_1_sparse_softmax_1ad2dc43b15de20c26df875d2e2f5e9191` | `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/operation#classtensorflow_1_1_operation` |
| `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-softmax#classtensorflow_1_1ops_1_1_sparse_softmax_1a94b1fda8269b6888396b9c165fdd28b1` | `::https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/output#classtensorflow_1_1_output` |

| ### Public functions ||
|---|---|
| `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-softmax#classtensorflow_1_1ops_1_1_sparse_softmax_1aabb6b649a7d5f3c8a9db2dea2c44ef1a() const ` | `::tensorflow::Node *` |
| `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-softmax#classtensorflow_1_1ops_1_1_sparse_softmax_1af6f0269e4c290ac6b8234ba881dafe13() const ` | ` `` ` |
| `https://www.tensorflow.org/versions/r2.0/api_docs/cc/class/tensorflow/ops/sparse-softmax#classtensorflow_1_1ops_1_1_sparse_softmax_1a1fccadd0a530764ea2d1691045ebf2a5() const ` | ` `` ` |

## Public attributes

### operation

```
Operation operation
```

### output

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

## Public functions

### SparseSoftmax

```
 SparseSoftmax(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input sp_indices,
  ::tensorflow::Input sp_values,
  ::tensorflow::Input sp_shape
)
```

### node

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

### operator::tensorflow::Input

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

### operator::tensorflow::Output

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