# tf.raw_ops.SparseSoftmax

<br />

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

#### View aliases


**Compat aliases for migration**

See
[Migration guide](https://www.tensorflow.org/guide/migrate) for
more details.

[`tf.compat.v1.raw_ops.SparseSoftmax`](https://www.tensorflow.org/api_docs/python/tf/raw_ops/SparseSoftmax)

<br />

    tf.raw_ops.SparseSoftmax(
        sp_indices, sp_values, sp_shape, name=None
    )

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()`](https://www.tensorflow.org/versions/r2.13/api_docs/python/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()`](https://www.tensorflow.org/versions/r2.13/api_docs/python/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.

<br />

<br />

<br />

| ## Args ||
|---|---|
| `sp_indices` | A `Tensor` of type `int64`. 2-D. `NNZ x R` matrix with the indices of non-empty values in a SparseTensor, in canonical ordering. |
| `sp_values` | A `Tensor`. Must be one of the following types: `half`, `float32`, `float64`. 1-D. `NNZ` non-empty values corresponding to `sp_indices`. |
| `sp_shape` | A `Tensor` of type `int64`. 1-D. Shape of the input SparseTensor. |
| `name` | A name for the operation (optional). |

<br />

<br />

<br />

<br />

| ## Returns ||
|---|---|
| A `Tensor`. Has the same type as `sp_values`. ||

<br />