Dieser Artikel ist eine leicht verständliche Ausgabe von ** Deep Learning von Grund auf neu. Kapitel 6 Methode zur Fehlerrückübertragung **. Ich konnte es selbst verstehen, also hoffe ich, dass Sie es bequem lesen können. Ich würde mich auch sehr freuen, wenn Sie sich beim Studium dieses Buches darauf beziehen könnten.
Um die Backpropagation in einem neuronalen Netzwerk zu implementieren, müssen die Neuronen Schichten sein. Es ist am einfachsten, sich eine Schicht als ein Neuron vorzustellen, das sowohl die Vorwärts- als auch die Rückwärtsausbreitung implementiert.
Die Mindestanzahl von Schichten, die zum Implementieren eines neuronalen Netzwerks erforderlich sind, beträgt ** Sigmoidschicht, Reluschicht, affine Schicht, Ausgangsschicht zur Verlustfunktion **.
Durch die Implementierung der Schicht als Klasse und ihre Gestaltung als Komponente wird die Bedienung einfacher, wenn das neuronale Netzwerk in verschiedene Strukturen unterteilt wird.
Dieses Mal werde ich versuchen, die im vorherigen Artikel erwähnten Additions- und Multiplikationsneuronen zu schichten.
class AddLayer:#Additionsschicht
def __init__(self):
pass#Nichts tun
def forward(self, x, y):
out = x + y
return out
def backward(self, dout):
dx = dout * 1
dy = dout * 1 #Zum Zeitpunkt der Addition erben beide Variablen das vorherige Differential
return dx, dy
In der Additionsschicht summiert der Vorwärtsausbreitungsprozess die Werte der beiden Variablen und gibt sie zurück, und der Rückwärtsausbreitungsprozess erbt und gibt das vorherige Differential zurück.
class MulLayer:#Schicht multiplizieren
def __init__(self):
self.x = None
self.y = None #Variable xy zur Instanzvariable
def forward(self, x, y):
self.x = x
self.y = y #Speichern Sie den Wert der Variablen xy, da diese im Back-Propagation-Prozess verwendet wird.
out = x * y
return out
def backward(self, dout):
dx = dout * self.y
dy = dout * self.x
return dx, dy
In der Multiplikationsschicht multipliziert der Vorwärtsausbreitungsprozess die Variable xy und gibt sie zurück, und der Rückwärtsausbreitungsprozess multipliziert den Wert der anderen Variablen mit dem vorherigen Differential, um das Differential zu erhalten und zurückzugeben.
Recommended Posts