Ableitung der ReLU-Funktion in Python
ReLU steht für Rectified Linear Activation Function, die beliebteste Alternative der Aktivierungsfunktion im Bereich Deep Learning. ReLU ist ein Teil der linearen Funktion, die die Eingabe als gleich ausgibt, wenn der Eingabewert positiv ist; wenn nicht, wird es die Ausgabe Null geben.
Dieser Artikel zeigt, wie Sie mit der Programmiersprache Python eine Ableitung der ReLU-Funktion erstellen.
Implementieren Sie die ReLU-Funktion in Python
Als mathematische Funktion können wir die ReLU-Funktion wie folgt definieren:
f(x) = max(0,x)
Diese Funktion ist linear um x
und gibt Null für alle negativen Werte aus.
Der folgende Pseudocode repräsentiert die ReLU-Funktion.
if input > 0:
return input
else:
return 0
Als obigen Pseudocode können wir unsere Implementierung der ReLU-Funktion wie folgt erstellen:
import numpy as nm
def relu_func(x):
return nm.maximum(0, x)
print(relu_func(2))
print(relu_func(0))
print(relu_func(0.1))
print(relu_func(-3))
In diesem Beispiel wurde die Funktion relu_func
mit dem Parameter x
definiert. Diese Funktion gibt die Ausgabe unter Berücksichtigung der ReLU-Funktion zurück.
Wir haben der Funktion relu_func
sofort eine einzelne Ganzzahl als Argument übergeben.
Die Funktion maximum()
gibt den höchsten Wert zurück. Wenn die Ganzzahl größer als 0 ist, wird dieselbe Ganzzahl wie die Eingabe gedruckt; wenn nicht, wird Null ausgegeben.
Die ReLU-Funktion, die wir im obigen Code implementiert haben, funktioniert also mit jeder einzelnen Ganzzahl. auch mit numpy
-Arrays.
Wir können die Ausgabe wie folgt erhalten:
Ableitung der ReLU-Funktion in Python
Die Ableitung der ReLU-Funktion ruft ansonsten den Gradienten von ReLu auf. Die Ableitung der Funktion ist die Steigung.
Wenn wir einen Graphen erstellen, zum Beispiel y= ReLu(x)
und x
größer als Null ist, ist der Gradient 1
.
Wenn x
kleiner Null ist, ist die Steigung 0
. Wenn x = 0
, ist die Ableitung nicht vorhanden.
Die mathematische Ableitung der ReLu-Funktion kann wie folgt definiert werden:
f'(x) = 1, x >= 0
= 0, x < 0
Wir können die Ableitung der ReLu-Funktion auf den Graphen anwenden. Schauen wir uns also das folgende Beispiel an.
# %matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
# define relu function
def relu_func(z):
return np.maximum(0, z)
z = np.arange(-3, 5, 1)
print(z)
Y = relu_func(z)
print(Y)
plt.plot(z, Y, "o-")
plt.xlabel("X")
plt.ylabel("F(x)")
plt.grid()
Es ist definiert als relu_func
, wobei der Parameter z
unter Berücksichtigung des obigen Codes übergeben wird. Unter dieser Funktion geben wir die Funktion relu
und die Variable z
zurück, die definiert sind, um den Bereich der x-Achse zu erhalten.
Auch definierte Y
-Variable definiert, um relu_func
mit einem Parameter zu übergeben. Die Funktion relu_func(Z)
berechnet die reLU für alle z
-Werte.
Daher bezeichnen alle negativen Werte eine Null. Der x-Achsen-Plot ist X
, der y-Achsen-Plot ist F(x)
.
Das folgende Diagramm ist die Ausgabe, die wir aus dem obigen Code erhalten.
Wie bereits erwähnt, bedeutet Ableitung die Steigung des Graphen an einem bestimmten Punkt. Die Steigung von x=1
ist also 1.
Alle anderen Punkte größer als 0 erhalten eine Steigung von 1. Aber wie groß ist die Steigung von x=-3
?
Wir können sehen, dass es für diesen Punkt keine Steigung gibt.
Alle anderen Punkte kleiner als 0 erhalten keine Steigung, was eine Steigung von 0 bedeutet. Dies wird also die abgeleitete, eingebaute Python-Programmiersprache der ReLu-Funktion genannt.
Abschluss
Dieser Artikel zeigt, wie die ReLu-Funktion in Python implementiert wird, und behandelt hauptsächlich, wie die ReLu-Ableitungsfunktion implementiert wird. Die ReLU-Funktion wird häufig im Deep Learning verwendet.
Aber es hat einige Probleme. Wenn beispielsweise der Eingangswert kleiner als 0 ist, ist der Ausgang 0.
Daher ist das neuronale Netzwerk nicht in der Lage, seine Arbeiten fortzusetzen. Als Lösung dafür wird meist die Leaky ReLU-Funktion verwendet.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.