根据 backprop 办法获得的偏导数更新 w 和 b 的值。
- def update_mini_batch(self, mini_batch, eta):
- """
- 更新 w 和 b 的值
- :param mini_batch: 一部分的样本
- :param eta: 进修率
- """
- # 根据 biases 和 weights 的行列数创建对应的全部元素值为 0 的空矩阵
- nabla_b = [np.zeros(b.shape) for b in self.biases]
- nabla_w = [np.zeros(w.shape) for w in self.weights]
- for x, y in mini_batch:
- # 根据样本中的每一个输入 x 的其输出 y,计算 w 和 b 的偏导数
- delta_nabla_b, delta_nabla_w = self.backprop(x, y)
- # 累加储存偏导值 delta_nabla_b 和 delta_nabla_w
- nabla_b = [nb+dnb for nb, dnb in zip(nabla_b, delta_nabla_b)]
- nabla_w = [nw+dnw for nw, dnw in zip(nabla_w, delta_nabla_w)]
- # 更新根据累加的偏导值更新 w 和 b,这里因为用了小样本,
- # 所以 eta 要除于小样本的长度
推荐阅读
PHP说简单,然则要精晓也不是一件简单的事。我们除了会应用之外,还得知道它底层的工作道理。懂得PHP底层实现的目标是什么?动态说话要像用好起首得懂得它,内存治理、框架模型值得我们借鉴>>>详细阅读
本文标题:神经网络中 BP 算法的原理与 Python 实现源码解析
地址:http://www.17bianji.com/lsqh/35499.html
1/2 1