接下来则是 evaluate 的实现,调用 feedforward 办法盘似揭捉?练好的神经收集的输出层神经元值(也即猜测值),然后比对精确值和猜测值获得精确率。
- def evaluate(self, test_data):
- # 获得猜测结不雅
- test_results = [(np.argmax(self.feedforward(x)), y)
- for (x, y) in test_data]
- # 返回精确识其余个数
- return sum(int(x == y) for (x, y) in test_results)
最后,我们可以应用这个源率攀来练习一个手写数字识其余神经收集,并输出评估的结不雅,代码如下:
- import mnist_loader
- import network
- training_data, validation_data, test_data = mnist_loader.load_data_wrapper()
- net = network.Network([784, 30, 10])
- net.SGD(training_data, 30, 10, 3.0, test_data = test_data)
- # 输出结不雅
- # Epoch 0: 9038 / 10000
- # Epoch 1: 9178 / 10000
- # Epoch 2: 9231 / 10000
- # ...
- # Epoch 27: 9483 / 10000
- # Epoch 28: 9485 / 10000
- # Epoch 29: 9477 / 10000
可以看到,在经由 30 轮的迭代后,辨认手写神经收集的精确度在 95% 阁下,当然,设置不合的迭代次数,进修率以取样数对精度都邑有影响,若何调参也是一门技巧活,这个坑就后期再填吧。
推荐阅读
PHP说简单,然则要精晓也不是一件简单的事。我们除了会应用之外,还得知道它底层的工作道理。懂得PHP底层实现的目标是什么?动态说话要像用好起首得懂得它,内存治理、框架模型值得我们借鉴>>>详细阅读
本文标题:神经网络中 BP 算法的原理与 Python 实现源码解析
地址:http://www.17bianji.com/lsqh/35499.html
1/2 1