Wie ein Netz aus Zahlen eine Antwort rechnet
Der Vorwärtsdurchlauf ist die Rechnung, mit der ein neuronales Netz aus seinen Eingaben eine Ausgabe berechnet. Sie läuft Schicht für Schicht von vorn nach hinten.
Wer sie von Hand rechnen kann, versteht, was ein trainiertes Netz tut, wenn es eine Vorhersage macht. Hier rechnen wir sie für einen Fahrradverleih.
Am Ende dieser Lektion
Notiz
Ich kann berechnen, was ein kleines Netz für gegebene Eingaben ausgibt.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Vorwärtsdurchlauf | die Rechnung von den Eingaben bis zur Ausgabe | |
| Gewichtsmatrix | alle Gewichte einer Schicht, eine Zeile je Neuron | |
| Aktivierung | die Zahl, die ein Neuron nach seiner Funktion ausgibt | |
| Vorhersage | die Ausgabe des Netzes für eine Zeile | |
| Eingabevektor | die Liste der Eingaben einer Zeile | [2.0, 0.5] |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ausgabe einer Schicht, Eingabe der nächsten
Der Vorwärtsdurchlauf hat feste Schritte. Jedes Neuron einer Schicht bildet seine Summe aus allen Eingaben, seinen Gewichten und seinem Bias. Dann wendet es die Aktivierungsfunktion an.
Die Zahlen aller Neuronen einer Schicht bilden eine Liste. Diese Liste ist die Eingabe der nächsten Schicht. Das wiederholt sich bis zur Ausgabeschicht.
Beispiel: zwei Tage durch ein Netz
| Schritt | Warmer Tag [2,0 und 0,5] | Nasser Tag [0,5 und 2,0] |
|---|---|---|
| Neuron 1 (Gewichte 1 und -2), Summe | 2,0 - 1,0 = 1,0 | 0,5 - 4,0 = -3,5 |
| Neuron 1 nach ReLU | 1,0 | 0 |
| Neuron 2 (Gewichte 0,5 und 1, Bias -1), Summe | 1,0 + 0,5 - 1 = 0,5 | 0,25 + 2,0 - 1 = 1,25 |
| Neuron 2 nach ReLU | 0,5 | 1,25 |
| Ausgabe (Gewichte 2 und 1, Bias 0,5) | 2,0 + 0,5 + 0,5 = 3,0 | 0 + 1,25 + 0,5 = 1,75 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die versteckte Schicht des warmen Tages
docker exec jupyter python3 -c "print(max(0, 2 * 1 + 0.5 * -2), max(0, 2 * 0.5 + 0.5 * 1 - 1))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Ausgabe des warmen Tages
docker exec jupyter python3 -c "print(2 * 1.0 + 1 * 0.5 + 0.5)"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Eine Schicht ist eine Schleife in einer Schleife
In Python steht die Gewichtsmatrix einer Schicht als Liste von Listen. Jede innere Liste gehört zu einem Neuron.
Die äußere Schleife geht über die Neuronen, die innere über die Eingaben. Das Ergebnis ist die Liste der Aktivierungen. Der Block darunter rechnet die versteckte Schicht des Beispiels.
Eine Schicht in Python
# Eine Schicht mit zwei Neuronen, Eingaben: Temperatur und Regen.
eingaben = [2.0, 0.5]
gewichte = [[1, -2], [0.5, 1]]
biase = [0, -1]
ausgaben = []
for n in range(len(gewichte)):
summe = biase[n]
for k in range(len(eingaben)):
summe = summe + gewichte[n][k] * eingaben[k]
if summe < 0:
summe = 0
ausgaben.append(summe)
print(ausgaben)
# Setzen Sie die Eingaben auf [0.5, 2.0] und starten Sie erneut.
Ein häufiger Fehler
Warnung
Viele rechnen die Aktivierungsfunktion erst am Ende des ganzen Netzes. Sie gehört aber hinter jedes Neuron einer versteckten Schicht. Rechnen Sie darum jede Schicht ganz fertig, bevor Sie die nächste beginnen.