Die Sigmoid-Funktion in Python

Muhammad Waiz Khan 30 Januar 2023
  1. Implementieren Sie die Sigmoid-Funktion in Python mithilfe dem Modul math
  2. Implementierung der Sigmoid-Funktion in Python mit der Methode numpy.exp()
  3. Implementieren der Sigmoid-Funktion in Python unter Verwendung der SciPy-Bibliothek
Die Sigmoid-Funktion in Python

In diesem Tutorial werden verschiedene Methoden zur Verwendung der Sigmoid-Funktion in Python untersucht. Die Sigmoidfunktion ist eine mathematische logistische Funktion. Es wird häufig in der Statistik, der Audiosignalverarbeitung, der Biochemie und der Aktivierungsfunktion in künstlichen Neuronen verwendet. Die Formel für die Sigmoidfunktion lautet F(x) = 1/(1 + e^(-x)).

Implementieren Sie die Sigmoid-Funktion in Python mithilfe dem Modul math

Mit dem Modul math können wir unsere eigene Sigmoid-Funktion in Python implementieren. Wir benötigen die Methode math.exp() aus dem Modul math, um die Sigmoid-Funktion zu implementieren.

Der folgende Beispielcode zeigt, wie die Sigmoid-Funktion in Python verwendet wird.

import math


def sigmoid(x):
    sig = 1 / (1 + math.exp(-x))
    return sig

Das Problem bei dieser Implementierung ist, dass sie numerisch nicht stabil ist und der Überlauf auftreten kann.

Der Beispielcode für die numerisch stabile Implementierung der Sigmoid-Funktion in Python ist unten angegeben.

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

Implementierung der Sigmoid-Funktion in Python mit der Methode numpy.exp()

Wir können die Sigmoid-Funktion auch mit der Methode numpy.exp() in Python implementieren. Wie die Implementierungen der Sigmoid-Funktion mit der Methode math.exp() können wir auch die Sigmoid-Funktion mit der Methode numpy.exp() implementieren.

Der Vorteil der Methode numpy.exp() gegenüber math.exp() besteht darin, dass sie neben Integer oder Float auch die Eingabe in Form eines Arrays verarbeiten kann.

Unten sehen Sie die Implementierung der regulären Sigmoid-Funktion mit der Methode numpy.exp() in Python.

import numpy as np


def sigmoid(x):

    z = np.exp(-x)
    sig = 1 / (1 + z)

    return sig

Für die numerisch stabile Implementierung der Sigmoid-Funktion müssen wir zuerst den Wert jedes Werts des Eingabearrays überprüfen und dann den Wert des Sigmoid übergeben. Hierfür können wir die Methode np.where() verwenden, wie im folgenden Beispielcode gezeigt.

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

Implementieren der Sigmoid-Funktion in Python unter Verwendung der SciPy-Bibliothek

Wir können auch die SciPy-Version der Sigmoid-Funktion von Python verwenden, indem wir einfach die Sigmoid-Funktion expit in die SciPy-Bibliothek importieren.

Der folgende Beispielcode zeigt, wie die Sigmoid-Funktion mithilfe der Bibliothek SciPy verwendet wird:

from scipy.special import expit

x = 0.25
sig = expit(x)

Die Methode expit() ist langsamer als die obigen Implementierungen. Der Vorteil der Methode expit() besteht darin, dass sie die verschiedenen Arten von Eingaben wie Liste, Array usw. automatisch verarbeiten kann.

from scipy.special import expit

sig = expit(np.array([0.25, 0.5, 0.6, 0.7, 0.4]))
print(sig)

Ausgabe:

[0.5621765  0.62245933 0.64565631 0.66818777 0.59868766]