scipy.special.

log_softmax#

scipy.special.log_softmax(x, ось=None)[источник]#

Вычислить логарифм функции softmax.

В принципе:

log_softmax(x) = log(softmax(x))

но с использованием более точной реализации.

Параметры:
xarray_like

Входной массив.

осьint или кортеж ints, опционально

Ось для вычисления значений. По умолчанию None, и softmax будет вычислен по всему массиву x.

Возвращает:
sndarray или скаляр

Массив с той же формой, что и x. Экспонента результата будет суммироваться до 1 вдоль указанной оси. Если x является скаляром, возвращается скаляр.

Примечания

log_softmax более точный, чем np.log(softmax(x)) с входами, которые делают softmax насыщение (см. примеры ниже).

Добавлено в версии 1.5.0.

log_softmax имеет экспериментальную поддержку совместимых с Python Array API Standard бэкендов в дополнение к NumPy. Пожалуйста, рассмотрите тестирование этих функций, установив переменную окружения SCIPY_ARRAY_API=1 и предоставление массивов CuPy, PyTorch, JAX или Dask в качестве аргументов массива. Поддерживаются следующие комбинации бэкенда и устройства (или других возможностей).

Библиотека

CPU

GPU

NumPy

н/д

CuPy

н/д

PyTorch

JAX

Dask

н/д

См. Поддержка стандарта array 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])