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]