首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反向传播错误

反向传播错误
EN

Stack Overflow用户
提问于 2020-05-17 01:11:35
回答 1查看 58关注 0票数 1

我正在尝试从头开始实现反向传播。虽然我的成本在降低,但梯度检查会产生一个0.767399376130221。我一直在努力找出哪里出了问题,并设法将代码精简为以下几行:

代码语言:javascript
复制
 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。我使用交叉熵作为损失函数。我正在遵循后部支柱的链条规则。我怀疑问题可能出在我使用产品的顺序上,但我已经尝试了所有的方法,但仍然没有运气。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-17 23:23:10

我只是通过yh - y计算1.7250119005319425e-10,而不是进一步的乘法,从而得到了delta3的差值。现在我需要弄清楚为什么会这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61840652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档