python实现BackPropagation算法


Posted in Python onDecember 14, 2017

实现神经网络的权重和偏置更新,很重要的一部就是使用BackPropagation(反向传播)算法。具体来说,反向传播算法就是用误差的反向传播来计算w(权重)和b(偏置)相对于目标函数的导数,这样就可以在原来的w,b的基础上减去偏导数来更新。其中我上次写的python实现梯度下降中有一个函数backprop(x,y)就是用来实现反向传播的算法。(注:代码并非自己总结,github上有这个代码的实现https://github.com/LCAIZJ/neural-networks-and-deep-learning)

def backprop(self,x,y):
  nabla_b = [np.zeros(b.shape) for b in self.biases]
  nabla_w = [np.zeros(w.shape) for w in self.weights]
  # 通过输入x,前向计算输出层的值
  activation = x
  activations = [x]# 存储的是所以的输出层
  zs = []
  for b,w in zip(self.biases,self.weights):
    z = np.dot(w,activation)+b
    zs.append(z)
    activation = sigmoid(z)
    activations.append(activation)
  # 计算输出层的error
  delta = self.cost_derivative(activations[-1],y)*sigmoid_prime(zs[:-1])
  nabla_b[-1] = delta
  nabla_w[-1] = np.dot(delta,activations[-2].transpose())
  #反向更新error
  for l in xrange(2,self.num_layers):
    z = zs[-l]
    sp = sigmoid_prime(z)
    delta = np.dot(self.weight[-l+1].transpose(),delta)*sp
    nabla_b[-l] = delta
    nabla_w[-l] = np.dot(delta,activations[-l-1].transpose())
  return (nabla_b,nabla_w)

其中,传入的x和y是一个单独的实例。

def cost_derivative(self,output_activation,y):
  return (output_activation-y)
def sigmoid(z):
  return 1.0/(1.0+np.exp(z))
def sigmoid_prime(z):
  return sigmoid(z)*(1-sigmoid(z))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现的圆形绘制(画圆)示例
Jan 31 Python
Python基于whois模块简单识别网站域名及所有者的方法
Apr 23 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
对Python闭包与延迟绑定的方法详解
Jan 07 Python
python处理大日志文件
Jul 23 Python
python super的使用方法及实例详解
Sep 25 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
Jun 17 Python
Python获取浏览器窗口句柄过程解析
Jul 25 Python
了解一下python内建模块collections
Sep 07 Python
Numpy(Pandas)删除全为零的列的方法
Sep 11 Python
cookies应对python反爬虫知识点详解
Nov 25 Python
Python MNIST手写体识别详解与试练
Nov 07 Python
python实现随机梯度下降(SGD)
Mar 24 #Python
Python实现将一个正整数分解质因数的方法分析
Dec 14 #Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
Dec 14 #Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 #Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 #Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
Dec 14 #Python
python编程通过蒙特卡洛法计算定积分详解
Dec 13 #Python
You might like
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
smarty中post用法实例
2014/11/28 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
2010/04/15 Javascript
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
2016/11/03 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
vue.js学习笔记之v-bind和v-on解析
2018/05/03 Javascript
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
详解Python中的__new__()方法的使用
2015/04/09 Python
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
利用Python在一个文件的头部插入数据的实例
2018/05/02 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
Puma印度官网:德国运动品牌
2019/10/06 全球购物
会计与审计专业大专生求职信
2013/10/03 职场文书
喝酒检查书范文
2014/02/23 职场文书
班级学习计划书
2014/04/27 职场文书
质量标语大全
2014/06/12 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
法定授权委托证明书
2014/09/27 职场文书
科学育儿宣传标语
2014/10/08 职场文书
高中教师个人总结
2015/02/10 职场文书
会计实训总结范文
2015/08/03 职场文书
初三语文教学反思
2016/03/03 职场文书