Python 反向传播错误

Python 反向传播错误,python,numpy,machine-learning,backpropagation,Python,Numpy,Machine Learning,Backpropagation,我试图从头开始实现反向传播。当我的成本降低时,梯度检查会产生一个呼啸声0.767399376130221。我一直在试图找出问题所在,并设法将代码精简到以下几行: def forward(self,X,y): z2 = self.params_l1.dot(X.T) a2 = self.sigmoid(z2) z3 = self.params_l2.dot(a2) a3 = self.sigmoid(z3) loss = self.cross_en

我试图从头开始实现反向传播。当我的成本降低时,梯度检查会产生一个呼啸声
0.767399376130221
。我一直在试图找出问题所在,并设法将代码精简到以下几行:

 def forward(self,X,y):

    z2 = self.params_l1.dot(X.T) 
    a2 = self.sigmoid(z2) 
    z3 = self.params_l2.dot(a2) 
    a3 = self.sigmoid(z3)
    loss = self.cross_entropy(a3,y)

    return a3,loss,z2,a2,z3

def backward(self,X,y):

    n_examples = len(X)

    yh,loss,Z2,A2,Z3 =  self.forward(X,y)

    delta3 = np.multiply(-(yh - y),self.dsigmoid(Z3)) 

    delta2 = (np.dot(self.params_l2.T,delta3))*self.dsigmoid(Z2) 

    de3 = np.dot(delta3,A2.T)
    de2 = np.dot(delta2,X)

    self.params_l2 =  self.params_l2 -  self.lr * (de3 /n_examples)
    self.params_l1 =  self.params_l1 - self.lr *  (de2 / n_examples)


    return de3/n_examples ,de2 /n_examples
这是一个简单的(2,2,1)MLP。我用交叉熵作为损失函数。我正在遵循反支柱的链式规则。
我怀疑问题可能在于我购买产品的顺序,但我已经尝试了所有方法,但仍然没有成功。

我通过计算
delta3
仅通过
yh-y
而没有进一步的乘法,设法得到了
1.7250119005319425e-10
的差异。现在我需要弄清楚这是为什么

我通过计算
delta3
仅通过
yh-y
获得了
1.7250119005319425e-10
的差值,并且没有进一步的乘法。现在我需要弄清楚这是为什么

请不要忘记在此类问题中添加适当的语言和/或库标记(添加了
python
numpy
)。请不要忘记在此类问题中添加适当的语言和/或库标记(添加了
python
numpy
)。