machine-learning - 网络在达到特定精度后停止收敛
问题描述
完成本课程后,我决定从头开始实现一个深度神经网络以加深我的理解,但在训练网络时,准确率稳步提高,直到达到 35%,然后开始下降。这是我实现的反向传播算法。
我已将学习率设置为 0.001。我已经测试了 500 个纪元。准确度缓慢增加,这表明反向传播是正确的,但随后它停止并开始下降。我认为向后传递中可能仍然存在错误,但我找不到它。每个时期的训练准确性可以在这里找到=> https://pastebin.com/bfQc6B2F
#FORWARD PROP
z2 = self.parameters['W1'].dot(inpt)+self.parameters['b1']
a2 = relu(z2)
z3 = self.parameters['W2'].dot(a2)+self.parameters['b2']
man_output = softmax(z3,self)
#BACKPROP
sigma3 = prediction-mappings
sigma2 = self.parameters['W2'].T.dot(sigma3)* reluGrad(a2)
dW2 = (1/m)*sigma3.dot(a2.T)
db2 = (1/m)*np.sum(sigma3,axis=1,keepdims=True)
dW1 = (1/m)*sigma2.dot(inpt.T)
db1 = (1/m)*np.sum(sigma2,axis=1,keepdims=True)
self.grads={'dW1':dW1,'db1':db1,'dW2':dW2,'db2':db2}
#UPDATE PARAMETERS
for l in range(int(len(self.parameters)/2)):
self.parameters['W'+str(l+1)] = self.parameters['W'+str(l+1)] -alpha*self.grads['dW'+str(l+1)]
self.parameters['b'+str(l+1)] = self.parameters['b'+str(l+1)] -alpha*self.grads['db'+str(l+1)]
解决方案
推荐阅读
- angular - 带有反应形式的 Angular Mat-Table 在单击按钮时不显示数据,它会添加带有错误的空行
- mysql - 如何使用第一行的值更新所有行
- lua - 将样式 ID/名称从 HTML 转移到 .docx?
- sql - SQL - 两列按分组数据分成多列
- opengl - UnProject 缩放时无法获取世界坐标
- aurelia - Aurelia-testing:无法在“节点”上执行“replaceChild”:参数 1 不是“节点”类型
- node.js - 续集迁移 - 添加外键约束问题
- mysql - MySQL中transaction_isolation的性能
- azure-active-directory - 当 Azure AD 企业应用程序中的 AccountEnabled=false 时,是否可以避免通过 SCIM 预配删除用户?
- firebase - 从 firebase 获取数据并绑定到回收站视图