【发布时间】:2020-11-30 15:25:23
【问题描述】:
我目前正在从头开始制作一个神经网络,我已经让它与 mnist 数据集一起工作,以在测试图像上获得大约 80% 的准确度。达到这一点需要一段时间,所以我试图用动量实现梯度下降。当前代码是:
def backProp(self, inputs, correct_output):
self.outputLayerErrors = np.subtract(self.outputNeurons, correct_output)
self.hiddenLayerErrors = np.multiply(np.dot(self.secondLayerWeights.T,
self.secondLayerBiasesSummations = self.beta*self.secondLayerBiasesSummations + (1-self.beta)*self.outputLayerErrors
self.secondLayerWeightsSummations = self.beta*self.secondLayerWeightsSummations + (1-self.beta)*np.outer(self.outputLayerErrors, self.secondLayerNeurons)
self.firstLayerBiasesSummations = self.beta*self.firstLayerBiasesSummations + (1-self.beta)*self.hiddenLayerErrors
self.firstLayerWeightsSummations = self.beta*self.firstLayerWeightsSummations + (1-self.beta)*np.outer(self.hiddenLayerErrors, inputs)
def change(self):
self.secondLayerBiases -= self.learningRate * self.secondLayerBiasesSummations
self.secondLayerWeights -= self.learningRate * self.secondLayerWeightsSummations
self.firstLayerBiases -= self.learningRate * self.firstLayerBiasesSummations
self.firstLayerWeights -= self.learningRate * self.firstLayerWeightsSummations
beta 设置为 0.9,学习率为 0.1。我的常规 gd 以 0.0001 的学习率运行,但具有动量的 gd 仅适用于 0.1 的学习率,并且与 reg gd 相比,在准确性和速度方面也更差。我的代码或数学有什么问题吗?
【问题讨论】:
标签: python numpy machine-learning deep-learning neural-network