log_softmax — SciPy v1.15.3 Manual (original) (raw)
scipy.special.
scipy.special.log_softmax(x, axis=None)[source]#
Compute the logarithm of the softmax function.
In principle:
log_softmax(x) = log(softmax(x))
but using a more accurate implementation.
Parameters:
xarray_like
Input array.
axisint or tuple of ints, optional
Axis to compute values along. Default is None and softmax will be computed over the entire array x.
Returns:
sndarray or scalar
An array with the same shape as x. Exponential of the result will sum to 1 along the specified axis. If x is a scalar, a scalar is returned.
Notes
log_softmax is more accurate than np.log(softmax(x))
with inputs that make softmax saturate (see examples below).
Added in version 1.5.0.
Examples
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])