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 si vous pouviez vous y référer lors de l'étude de ce livre.
La couche Affine est une couche dans laquelle le signal d'entrée du neurone est multiplié par le poids, additionné et biaisé.
class Affine:#Implémentation de couche de traitement qui pondère le signal d'entrée et ajoute sa somme et sa polarisation
def __init__(self, W, b):
self.W = W
self.b = b
self.x = None
self.dW = None #Créez une variable d'instance pour enregistrer chaque différentiel obtenu par le traitement de rétropropagation
self.db = None #Créez une variable d'instance pour enregistrer chaque différentiel obtenu par le traitement de rétropropagation
def forward(self, x):
self.x = x
out = np.dot(x, self.W) + self.b
return out
def backward(self, dout):
dx = np.dot(dout, self.W.T)
self.dW = np.dot(self.x.T, dout)
self.db = np.sum(dout, axis=0)#Pour prendre en charge plusieurs données (par lots)
#Trouvez le différentiel de biais par la somme des différentiels précédents
return dx
Étant donné que le processus de rétro-propagation utilise la multiplication et l'addition dans le processus de propagation vers l'avant de la couche Affine, la différenciation de biais hérite de la différenciation précédente, et la différenciation de poids et de valeur d'entrée est transposée et remplacée par la différenciation précédente. Il est calculé en multipliant par. Le biais n'est pas seulement hérité, mais le traitement par lots est effectué comme ci-dessus.