scipy.special.

log_softmax#

scipy.special.log_softmax(x, axis=None)[Quelle]#

Berechnet den Logarithmus der Softmax-Funktion.

Im Prinzip

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

aber mit einer genaueren Implementierung.

Parameter:
xarray_like

Eingabearray.

axisint oder Tupel von ints, optional

Achse, entlang derer die Werte berechnet werden sollen. Standard ist None und Softmax wird über das gesamte Array x berechnet.

Rückgabe:
sndarray oder Skalar

Ein Array mit der gleichen Form wie x. Die Exponentialfunktion des Ergebnisses summiert sich entlang der angegebenen Achse zu 1. Wenn x ein Skalar ist, wird ein Skalar zurückgegeben.

Hinweise

log_softmax ist genauer als np.log(softmax(x)) bei Eingaben, die softmax sättigen lassen (siehe Beispiele unten).

Hinzugefügt in Version 1.5.0.

log_softmax hat experimentelle Unterstützung für Backends, die mit dem Python Array API Standard kompatibel sind, zusätzlich zu NumPy. Bitte erwägen Sie, diese Funktionen zu testen, indem Sie die Umgebungsvariable SCIPY_ARRAY_API=1 setzen und CuPy-, PyTorch-, JAX- oder Dask-Arrays als Array-Argumente bereitstellen. Die folgenden Kombinationen aus Backend und Gerät (oder anderer Fähigkeit) werden unterstützt.

Bibliothek

CPU

GPU

NumPy

n/a

CuPy

n/a

PyTorch

JAX

Dask

n/a

Siehe Unterstützung für den Array API Standard für weitere Informationen.

Beispiele

>>> 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])