scipy.special.
log_softmax#
- scipy.special.log_softmax(x, axis=None)[source]#
计算 softmax 函数的对数。
原则上
log_softmax(x) = log(softmax(x))
但使用更准确的实现。
- 参数:
- x类数组
输入数组。
- axisint 或 int 元组,可选
计算值的轴。默认为 None,softmax 将在整个数组 x 上计算。
- 返回:
- sndarray 或标量
与 x 具有相同形状的数组。结果的指数沿指定轴加起来为 1。如果 x 是标量,则返回一个标量。
说明
log_softmax
比使用使softmax
饱和的输入值的np.log(softmax(x))
更准确(参见下面的示例)。1.5.0 版本中新增。
log_softmax
除了 NumPy 之外,还对 Python Array API Standard 兼容后端提供实验性支持。请考虑通过设置环境变量SCIPY_ARRAY_API=1
并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。支持以下后端和设备(或其他能力)的组合。库
CPU
GPU
NumPy
✅
不适用
CuPy
不适用
✅
PyTorch
✅
✅
JAX
✅
✅
Dask
✅
不适用
有关更多信息,请参阅对数组 API 标准的支持。
示例
>>> import numpy as np >>> from scipy.special import log_softmax >>> from scipy.special import softmax >>> np.set_printoptions(precision=5)
>>> x = np.array([1000.0, 1.0])
>>> y = log_softmax(x) >>> y array([ 0., -999.])
>>> with np.errstate(divide='ignore'): ... y = np.log(softmax(x)) ... >>> y array([ 0., -inf])