A função Sigmoid em Python
-
Implementar a função sigmóide em Python usando o módulo
math
-
Implementar a função sigmóide em Python usando o método
numpy.exp()
-
Implementar a função sigmoid em Python usando a biblioteca
SciPy
Neste tutorial, examinaremos vários métodos para usar a função sigmóide em Python. A função sigmóide é uma função logística matemática. É comumente usado em estatística, processamento de sinais de áudio, bioquímica e função de ativação em neurônios artificiais. A fórmula para a função sigmóide é F(x) = 1/(1 + e^(-x))
.
Implementar a função sigmóide em Python usando o módulo math
Podemos implementar nossa própria função sigmóide em Python usando o módulo math
. Precisamos do método math.exp()
do módulo math
para implementar a função sigmóide.
O código de exemplo a seguir demonstra como usar a função sigmoid em Python.
import math
def sigmoid(x):
sig = 1 / (1 + math.exp(-x))
return sig
O problema com essa implementação é que ela não é numericamente estável e o estouro pode ocorrer.
O código de exemplo da implementação numericamente estável da função sigmóide em Python é fornecido abaixo.
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
Implementar a função sigmóide em Python usando o método numpy.exp()
Também podemos implementar a função sigmóide usando o método numpy.exp()
em Python. Como as implementações da função sigmóide usando o método math.exp()
, também podemos implementar a função sigmóide usando o método numpy.exp()
.
A vantagem do método numpy.exp()
sobre math.exp()
é que além de inteiro ou float, ele também pode manipular a entrada na forma de um array.
Abaixo está a implementação da função sigmóide regular usando o método numpy.exp()
em Python.
import numpy as np
def sigmoid(x):
z = np.exp(-x)
sig = 1 / (1 + z)
return sig
Para a implementação numericamente estável da função sigmóide, primeiro precisamos verificar o valor de cada valor do array de entrada e, em seguida, passar o valor do sigmóide. Para isso, podemos usar o método np.where()
, conforme mostrado no código de exemplo abaixo.
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
Implementar a função sigmoid em Python usando a biblioteca SciPy
Também podemos usar a versão SciPy
da função sigmóide do Python, simplesmente importando a função sigmóide chamada expit
na biblioteca SciPy
.
O código de exemplo abaixo demonstra como usar a função sigmóide usando a biblioteca SciPy
:
from scipy.special import expit
x = 0.25
sig = expit(x)
O método expit()
é mais lento do que as implementações acima. A vantagem do método expit()
é que ele pode manipular automaticamente os vários tipos de entradas, como lista e array, etc.
from scipy.special import expit
sig = expit(np.array([0.25, 0.5, 0.6, 0.7, 0.4]))
print(sig)
Resultado:
[0.5621765 0.62245933 0.64565631 0.66818777 0.59868766]