Die Erklärung des Codes wurde hinzugefügt.
Ich war ein Anfänger. Obwohl ich selbst gelernt habe, habe ich es verstanden. Als ich gerade anfing, fügte ich einen Kommentar hinzu, den ich so hören wollte. Ich denke, dieser Artikel wird wahrscheinlich von Anfängern und Fortgeschrittenen gelesen. Anfangs war es schwierig, alleine zu lernen, und manchmal konnte ich es nicht verstehen und war wahrscheinlich frustriert. Ich schrieb, dass ich in einem solchen Fall sogar ein bisschen helfen könnte.
Eine Aktivierungsfunktion wurde im Deep Learning vorgeschlagen und wird noch erforscht. Ich habe versucht, jede Seite nebeneinander anzuzeigen. Ich benutze oft ausschließlich ReLU, aber als ich darüber nachdachte, dachte ich, ich könnte mich nicht genau daran erinnern, also versuchte ich es aufzulisten.
Ich habe es mit Jupyter Notebook implementiert. Jede Aktivierungsfunktion kann nebeneinander angezeigt werden.
%matplotlib inline
#Modulimport
import numpy as np
import matplotlib.pyplot as plt
#Grafikeinstellungen
n_cols = 4
n_rows = 2
plt.figure(figsize=(20,8))
#Generiere den Wert von x
x = np.arange(-10, 10, 0.01)
#Liste jeder anzuzeigenden Funktion
activation_function_list = [ 'Indentity', 'Step', 'Sigmoid', 'tanh', 'ReLU', 'Leaky ReLU','Swish', 'Mish']
#Grafikanzeige
def graph(x,y):
plt.subplot(n_rows, n_cols, i+1)
plt.grid()
plt.title(f)
plt.ylim(-1, 1)
plt.xlim(-5, 5)
plt.plot(x,y)
#Berechnung jeder Funktion
for i, f in enumerate(activation_function_list):
#Gleiche Funktion
if f == 'Indentity':
y = x
#Stufenfunktion
elif f == 'Step':
y = np.where(x<=0, 0, 1)
#Sigmoidfunktion
elif f == 'Sigmoid':
y = 1./(1. + np.exp(-x))
#Tanh-Funktion
elif f == 'tanh':
y = (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))
#ReLU-Funktion
elif f == 'ReLU':
y = np.maximum(0,x)
#Undichte ReLU-Funktion
elif f == 'Leaky ReLU':
y = np.where(x > 0, x , 0.01 * x)
#Swish-Funktion
elif f == 'Swish':
y = x*1./(1. + np.exp(-x))
#Mischfunktion
elif f == 'Mish':
x_sp = np.log(1+np.exp(x)) #Softplus-Funktion
y = x * ((np.exp(x_sp ) - np.exp(-x_sp)) / (np.exp(x_sp) + np.exp(-x_sp)))
#Diagramm erstellen
graph(x,y)
#Zeichnen eines Diagramms
plt.show()
#Grafik speichern
fig.savefig('activation_function_list.png')
Das von matplotlip am Ende des Codes erstellte Diagramm wird als PNG-Datei gespeichert. Im obigen Fall wird diese Datei in demselben Verzeichnis gespeichert, in dem sich die Notebook-Datei befindet. Swish und Mish sind neue Aktivierungsfunktionen.
In Zukunft möchte ich den Leistungsunterschied zwischen diesen Aktivierungsfunktionen überprüfen.
Das ist das Ende.
Von hier aus werde ich den oben geschriebenen Code erklären. Ich habe den Kommentar geschrieben, den ich als Anfänger hören wollte. Ich denke, dass es für fortgeschrittene und fortgeschrittene Benutzer nicht ausreicht, aber wenn Sie interessiert sind, schauen Sie bitte.
%matplotlib inline
Es wird im Notizbuch gezeichnet, indem "% matplotlib inline" geschrieben wird.
Der folgende Code importiert zwei Module, NumPy und Matplotlib.
#Modulimport
import numpy as np
import matplotlib.pyplot as plt
Lassen Sie uns überprüfen, woher dieses Modul importiert wird. Wenn ich den folgenden Code auf meinem Notebook ausführe
import numpy as np
print(np.__file__)
Ausgabe
/Users/username/.pyenv/versions/3.6.2/lib/python3.6/site-packages/numpy/__init__.py
Diese Ausgabe hängt von jeder Umgebung ab. Aus diesem Ausgabeergebnis geht jedoch hervor, dass auf numpy verwiesen wird, das auf dem lokalen PC installiert ist.
__init __. py
wird im Artikel von @ PYTHONISTA ausführlich beschrieben.
Wie schreibe ich Python __init __.py
Da as beim Importieren hinzugefügt wird, können Sie danach mit np auf numpy verweisen.
import numpy
print(numpy.__file__)
Trotzdem können Sie das Gleiche tun.
Hier wird das Diagramm festgelegt, in dem die Aktivierungsfunktionen nebeneinander angezeigt werden. In der unten beschriebenen Nebenhandlung verwende ich die Einstellung, um 4 Diagramme horizontal und 2 vertikal anzuordnen. Die Figur wird mit der durch figsize angegebenen Größe hergestellt.
Die Liste wird am Ende des Codes als PNG-Datei gespeichert, aber das in der Abbildung platzierte Diagramm wird zu einer Datei.
#Grafikeinstellungen
n_cols = 4
n_rows = 2
plt.figure(figsize=(20,8))
#Generieren Sie x-Achsenwerte
x = np.arange(-10, 10, 0.01)
Versuchen wir es hier.
Wenn Sie die Tasten [Umschalt] + [Tab] drücken, während sich der Cursor in () befindet, werden die Details wie unten gezeigt angezeigt.
Von hier aus können Sie sehen, welche Parameter die Anordnung als Argument verwendet. Wenn x = np.arange (-10, 10, 0.1) ist, ist Start -10, Stopp ist 10, Schritt ist 0.1 und so weiter. Eine Liste mit Zahlen von -10 bis 10 wird in Schritten von 0,1 zurückgegeben. Lass es uns überprüfen.
print('Liste von x:',x)
print('x Länge:',len(x))
print('Art von x', type(x))
Liste von x: [-10. -9,99 -9,98 ... 9,97 9,98 9,99] Länge von x: 2000 Typ von x <class'numpy.ndarray '>
Es wurden 2000 Nummern generiert. Sie können sehen, dass die für stop angegebenen 10 nicht enthalten sind.
Hier erstellen wir eine Liste der Funktionen, die wir auflisten möchten.
activation_function_list = [ 'Indentity', 'Step', 'Sigmoid', 'tanh', 'ReLU', 'Leaky ReLU','Swish', 'Mish']
Dieser Teil definiert die Grafikzeichnungsfunktion. Diese Funktion wird im Prozess von 4-7 aufgerufen, um ein Diagramm zu erstellen. Der i-Teil zeigt die Position des Diagramms beim Anordnen in 4x2. Von oben links nach rechts 1 2 3 4 5 6 7 8 Es wird sein. Ich werde in das dritte Argument von plt.subplot aufgenommen. Dies bedeutet, dass i beim Aufrufen der Diagrammfunktion die Position des Diagramms selbst angibt.
Extrahieren Sie die Namen der Index- und Aktivierungsfunktionen aus der Liste in 4-7.
#Grafikanzeige
def graph(x, y):
#Der Index beginnt bei 0, aber die Position des Diagramms wird von 1 angegeben
#Fügen Sie hier 1 und 4 hinzu-Es ruft die in 6 definierte Grafikfunktion auf.
plt.subplot(n_rows, n_cols, i+1)
plt.grid() #Aktivieren Sie Gitterlinien im Diagramm
plt.title(f) #Setzen Sie den Funktionsnamen auf den Diagrammtitel
plt.ylim(-1, 1) #Geben Sie den anzuzeigenden Bereich der y-Achse an
plt.xlim(-5, 5) #Geben Sie den anzuzeigenden x-Achsenbereich an
plt.plot(x, y) #Zeichnen Sie die Werte von x und y
Es ist ein bisschen lang, also werde ich dem Code einen Kommentar hinzufügen. Die Details jeder Funktion sind zu viel, um sie hier dem Magazin zu widmen, daher werde ich sie in diesem Artikel weglassen.
#Berechnung jeder Funktion
#Verwenden Sie zum Aktivieren die Aufzählungsfunktion_function_Extrahieren von Indizes und Listenwerten aus der Liste.
#i ist der Index und f ist der Funktionsname.
#i wird in der Reihenfolge von 0 eingegeben.
for i, f in enumerate(activation_function_list):
#Der Wert von y wird basierend auf dem extrahierten Funktionsnamen berechnet.
#Der Wert von x ist 2,Da es 000 gab, ist der Wert von y auch 2.,000 wurden generiert.
if f == 'Indentity': #Gleiche Funktion
y = x
elif f == 'Step': #Stufenfunktion
y = np.where(x<=0, 0, 1)
elif f == 'Sigmoid': #Sigmaid-Funktion
y = 1./(1. + np.exp(-x))
elif f == 'tanh': #Hyperbolische Tangentenfunktion
y = (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))
elif f == 'ReLU': #ReLU-Funktion
y = np.maximum(0,x)
elif f == 'Leaky ReLU': #Undichte ReLU-Funktion
y = np.where(x > 0, x , 0.01 * x)
elif f == 'Swish': #Swish-Funktion
y = x*1./(1. + np.exp(-x))
elif f == 'Mish': #Swish-Funktion
x_sp = np.log(1+np.exp(x)) #Softplus-Funktion
y = x * ((np.exp(x_sp ) - np.exp(-x_sp )) / (np.exp(x_sp ) + np.exp(-x_sp )))
#Zeichnen eines Diagramms
#Übergeben Sie y, berechnet mit x als Argument der Diagrammfunktion.
graph(x,y)
Ich benutze die Aufzählungsfunktion, um den Index und den Wert aus der Liste zu erhalten. Sie können sehen, welcher Wert erhalten wird, indem Sie den folgenden Code ausführen
for i, f in enumerate(activation_function_list):
print('index:', i , 'value:', f)
Ausgabe
index: 0 value: Indentity index: 1 value: Step index: 2 value: Sigmoid index: 3 value: tanh index: 4 value: ReLU index: 5 value: Leaky ReLU index: 6 value: Swish index: 7 value: Mish
Sie können sehen, dass die Indizes und Werte der Reihe nach abgerufen werden können.
Das Diagramm wird in den folgenden zwei Zeilen gezeichnet und gespeichert. Die von Ihnen gespeicherte PNG-Datei wird in dem Ordner gespeichert, der Ihre Notebook-Datei enthält.
#Zeichnen eines Diagramms
plt.show()
#Grafik speichern
fig.savefig('activation_function_list.png')
Wenn es Fehler oder Irrtümer gibt, würde ich mich freuen, wenn Sie mich wissen lassen könnten.