向前传输(FreedForward)的代码。
- def feedforward(self, a):
- """
- 前向传输计算每个神经元的值
- :param a: 输入值
- :return: 计算后每个神经元的值
- """
- for b, w in zip(self.biases, self.weights):
- # 加权乞降以及加上 biase
- a = sigmoid(np.dot(w, a)+b)
- return a
源率攀里应用的是随机梯度降低(Stochastic Gradient Descent,简称 SGD),道理与梯度降低类似,不合的是随机梯度降低算法每次迭代只取数据集一一部分的样本来更新 w 和 b 的值,速度比梯度降低快,然则,它不必定会收敛到局部极小值,可能会在局部极小值邻近彷徨。
- def SGD(self, training_data, epochs, mini_batch_size, eta,
- test_data=http://ai.51cto.com/art/201705/None):
- """
- 随机梯度降低
- :param training_data: 输入的练习集
- :param epochs: 迭代次数
- :param mini_batch_size: 小样本数量
- :param eta: 进修率
- :param test_data: 测试数据集
- """
- if test_data: n_test = len(test_data)
- n = len(training_data)
- for j in xrange(epochs):
- # 搅乱练习集,让其排次序序产生变更
- random.shuffle(training_data)
- # 按照小样本数量划分练习集
- mini_batches = [
- training_data[k:k+mini_batch_size]
- for k in xrange(0, n, mini_batch_size)]
- for mini_batch
推荐阅读
PHP说简单,然则要精晓也不是一件简单的事。我们除了会应用之外,还得知道它底层的工作道理。懂得PHP底层实现的目标是什么?动态说话要像用好起首得懂得它,内存治理、框架模型值得我们借鉴>>>详细阅读
本文标题:神经网络中 BP 算法的原理与 Python 实现源码解析
地址:http://www.17bianji.com/lsqh/35499.html
1/2 1