mindspore.nn.Softmax

class mindspore.nn.Softmax(axis=- 1)[源代码]

逐元素计算Softmax激活函数,它是二分类函数 mindspore.nn.Sigmoid 在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。

对输入Tensor在轴 axis 上的元素计算其指数函数值,然后归一化到[0, 1]范围,总和为1。

Softmax定义为:

\[\text{softmax}(input_{i}) = \frac{\exp(input_i)}{\sum_{j=0}^{n-1}\exp(input_j)},\]

其中, \(input_{i}\) 是输入Tensor在轴 axis 上的第 \(i\) 个元素。

参数:
  • axis (int,可选) - 指定Softmax运算的轴axis,假设输入 input 的维度为input.ndim,则 axis 的范围为 [-input.ndim, input.ndim) ,-1表示最后一个维度。默认值: -1

输入:
  • input (Tensor) - 用于计算Softmax函数的Tensor。

输出:

Tensor,数据类型和shape与 input 相同,取值范围为[0, 1]。

异常:
  • TypeError - axis 既不是int也不是tuple。

  • ValueError - axis 是长度小于1的tuple。

  • ValueError - axis 是一个tuple,其元素不都在 [-input.ndim, input.ndim) 范围内。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore
>>> from mindspore import Tensor, nn
>>> import numpy as np
>>> # axis = -1(default), and the sum of return value is 1.0.
>>> input = Tensor(np.array([-1, -2, 0, 2, 1]), mindspore.float16)
>>> softmax = nn.Softmax()
>>> output = softmax(input)
>>> print(output)
[0.03168 0.01166 0.0861  0.636   0.2341 ]