承接上篇文章的理论知识(【神经网络】python实现神经网络(四)——误差反向传播的基础理论),现在我们来介绍如何用代码实现。
一.点乘层Affine的反向传播
基本没有什么需要特别注意的地方,都是按照理论来
class Affine:
def __init__(self,W,b):
self.W = W
self.b = b
self.x = None
self.dW = None
self.db = None
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)
return dx
二.激活函数Sigmod/Relu的反向传播
首先是Sigmod激活函数的代码实现:
class