# 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.

Args:

• scope: A 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.

Returns:

• ``` Output ``` : 1-D. The ``` NNZ ``` values for the result ``` SparseTensor ``` .

### Constructors and Destructors

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

### Public attributes

``` operation ```
``` Operation ```
``` output ```
``` :: tensorflow::Output ```

### Public functions

``` node () const ```
``` ::tensorflow::Node * ```
``` operator::tensorflow::Input () const ```
``` ```
``` operator::tensorflow::Output () 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 `
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the information I need" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too complicated / too many steps" },{ "type": "thumb-down", "id": "outOfDate", "label":"Out of date" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }]
[{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }]