# SoftMax¶

Applies the SoftMax function on one of the dimensions of an input tensor into an output tensor, so that the values in the output lies in the range $$[0,1]$$, and the sum of all the values of each slice along the applied dimension is equal to 1.

The SoftMax function is defined as:

$\large{Softmax(x_{a_0,...,a_i,...,a_n}) = \frac{e^{x_{a_0,...,a_i,...,a_n}}}{\sum\limits_{j \in [:,...,a_i,...,:]}{e^{x_j}}}}$

## Attributes¶

axes The axis along the SoftMax is computed, represented as a bitmask. If input has n dimensions, $$axes < n$$.

## Inputs¶

input: tensor of type T

## Outputs¶

output: tensor of type T

## Data Types¶

T: float16, float32

## Shape Information¶

input and output are tensors with a shape of $$[a_0,...,a_n]$$.

## Examples¶

SoftMax
in1 = network.add_input("input1", dtype=trt.float32, shape=(1, 1, 2, 2))
layer.axes = 1 << 2  # run softmax along h dim
network.mark_output(layer.get_output(0))

inputs[in1.name] = np.array(
[
[
[1.0, 1.0],
[3.0, 4.0],
]
]
)

outputs[layer.get_output(0).name] = layer.get_output(0).shape
expected[layer.get_output(0).name] = np.array(
[
[
[0.119, 0.048],
[0.881, 0.952],
]
],
)