La funzione sigmoide in Python
-
Implementa la funzione sigmoide in Python usando il modulo
math
-
Implementa la funzione Sigmoid in Python usando il metodo
numpy.exp()
-
Implementa la funzione Sigmoid in Python usando la libreria
SciPy
In questo tutorial, esamineremo vari metodi per utilizzare la funzione sigmoide in Python. La funzione sigmoide è una funzione logistica matematica. È comunemente usato in statistica, elaborazione del segnale audio, biochimica e funzione di attivazione nei neuroni artificiali. La formula per la funzione sigmoide è F(x) = 1/(1 + e^(-x))
.
Implementa la funzione sigmoide in Python usando il modulo math
Possiamo implementare la nostra funzione sigmoide in Python usando il modulo math
. Abbiamo bisogno del metodo math.exp()
dal modulo math
per implementare la funzione sigmoide.
Il codice di esempio seguente mostra come utilizzare la funzione sigmoid in Python.
import math
def sigmoid(x):
sig = 1 / (1 + math.exp(-x))
return sig
Il problema con questa implementazione è che non è numericamente stabile e potrebbe verificarsi l’overflow.
Di seguito viene fornito il codice di esempio dell’implementazione numericamente stabile della funzione sigmoide in Python.
import math
def stable_sigmoid(x):
if x >= 0:
z = math.exp(-x)
sig = 1 / (1 + z)
return sig
else:
z = math.exp(x)
sig = z / (1 + z)
return sig
Implementa la funzione Sigmoid in Python usando il metodo numpy.exp()
Possiamo anche implementare la funzione sigmoid usando il metodo numpy.exp()
in Python. Come le implementazioni della funzione sigmoid usando il metodo math.exp()
, possiamo anche implementare la funzione sigmoid usando il metodo numpy.exp()
.
Il vantaggio del metodo numpy.exp()
rispetto a math.exp()
è che oltre a integer o float, può anche gestire l’input nella forma di un array.
Di seguito è riportata l’implementazione della normale funzione sigmoid utilizzando il metodo numpy.exp()
in Python.
import numpy as np
def sigmoid(x):
z = np.exp(-x)
sig = 1 / (1 + z)
return sig
Per l’implementazione numericamente stabile della funzione sigmoide, dobbiamo prima controllare il valore di ciascun valore dell’array di input e quindi passare il valore del sigmoide. Per questo, possiamo usare il metodo np.where()
, come mostrato nel codice di esempio sotto.
import numpy as np
def stable_sigmoid(x):
sig = np.where(x < 0, np.exp(x) / (1 + np.exp(x)), 1 / (1 + np.exp(-x)))
return sig
Implementa la funzione Sigmoid in Python usando la libreria SciPy
Possiamo anche usare la versione SciPy
della funzione sigmoid di Python semplicemente importando la funzione sigmoide chiamata expit
nella libreria SciPy
.
Il codice di esempio seguente mostra come utilizzare la funzione sigmoid utilizzando la libreria SciPy
:
from scipy.special import expit
x = 0.25
sig = expit(x)
Il metodo expit()
è più lento delle implementazioni precedenti. Il vantaggio del metodo expit()
è che può gestire automaticamente i vari tipi di input come list, array, ecc.
from scipy.special import expit
sig = expit(np.array([0.25, 0.5, 0.6, 0.7, 0.4]))
print(sig)
Produzione:
[0.5621765 0.62245933 0.64565631 0.66818777 0.59868766]