作家
登录

一文详解神经网络 BP 算法原理及 Python 实现

作者: 来源: 2017-07-07 08:50:32 阅读 我要评论

.cost_derivative(activations[-1], y) * \ 
  •             sigmoid_prime(zs[-1]) 
  •         nabla_b[-1] = delta 
  •         # 乘于前一层的输出值 
  •         nabla_w[-1] = np.dot(delta, activations[-2].transpose()) 
  •         for l in xrange(2self.num_layers): 
  •             # 大年夜倒数第 **l** 层开端更新,**-l** 是 python 中特有的语法表示大年夜倒数第 l 层开端计算 
  •             # 下面这里应用 **l+1** 层的 δ 值来计算 **l** 的 δ 值 
  •             z = zs[-l] 
  •             sp = sigmoid_prime(z) 
  •             delta = np.dot(self.weights[-l+1].transpose(), delta) * sp 
  •             nabla_b[-l] = delta 
  •             nabla_w[-l] = np.dot(delta, activations[-l-1].transpose()) 
  •         return (nabla_b, nabla_w) 
  • 接下来则是 evaluate 的实现,调用 feedforward 办法盘似揭捉?练好的神经收集的输出层神经元值(也即猜测值),然后比对精确值和猜测值获得精确率。

    1. def evaluate(self, test_data): 
    2.        # 获得猜测结不雅 
    3.        test_results = [(np.argmax(self.feedforward(x)), y) 
    4.                        for (x, y) in test_data] 
    5.        # 返回精确识其余个数 
    6.        return sum(int(x == y) for (x, y) in test_results) 

    最后,我们可以应用这个源率攀来练习一个手写数字识其余神经收集,并输出评估的结不雅,代码如下:

    1. import mnist_loader 
    2. import network 
    3.  
    4. training_data, validation_data, test_data = mnist_loader.load_data_wrapper() 
    5. net = network.Network([7843010]) 
    6. net.SGD(training_data, 30

        推荐阅读

        大数据环境下该如何优雅地设计数据分层

      发个牢骚,搞大年夜数据的也得扶植数据仓库吧。并且不管是传统行业照样如今的互联网公司,都须要对数据仓库有必定的看重,而不是谈一句本身是搞大年夜数据的就很厉害了。数据仓库更多代表>>>详细阅读


      本文标题:一文详解神经网络 BP 算法原理及 Python 实现

      地址:http://www.17bianji.com/lsqh/36072.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)