Cet article est une sortie facile à comprendre de ** Deep Learning from scratch Chapter 6 Error back propagation method **. J'ai pu le comprendre moi-même, j'espère donc que vous pourrez le lire confortablement. De plus, je serais plus qu'heureux que vous puissiez vous y référer lorsque vous étudiez ce livre.
Pour implémenter la rétropropagation dans un réseau de neurones, les neurones doivent être des couches. Il est plus facile de considérer une couche comme un neurone qui implémente à la fois la propagation avant et arrière.
Le nombre minimum de couches requises pour implémenter un réseau neuronal est ** couche sigmoïde, couche Relu, couche affine, couche de sortie vers la fonction de perte **.
En implémentant la couche en tant que classe et en la transformant comme un composant, il devient plus facile à utiliser lors de la réorganisation du réseau neuronal en différentes structures.
Donc, cette fois, je vais essayer de superposer les neurones d'addition et de multiplication que j'ai mentionnés dans l'article précédent.
class AddLayer:#Couche d'addition
def __init__(self):
pass#Ne fais rien
def forward(self, x, y):
out = x + y
return out
def backward(self, dout):
dx = dout * 1
dy = dout * 1 #Au moment de l'ajout, les deux variables héritent du différentiel précédent
return dx, dy
Dans la couche d'addition, le processus de propagation directe additionne les valeurs des deux variables et les renvoie, et le processus de propagation arrière hérite et renvoie le différentiel précédent.
class MulLayer:#Multiplier la couche
def __init__(self):
self.x = None
self.y = None #Variable xy en variable d'instance
def forward(self, x, y):
self.x = x
self.y = y #Enregistrez la valeur de la variable xy car elle sera utilisée dans le processus de propagation arrière.
out = x * y
return out
def backward(self, dout):
dx = dout * self.y
dy = dout * self.x
return dx, dy
Dans la couche de multiplication, le processus de propagation directe multiplie la variable xy et retourne, et le processus de propagation arrière multiplie la valeur de l'autre variable par le différentiel précédent pour obtenir et renvoyer le différentiel.
Recommended Posts