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之再深点,更懂list
Sep 20 Python
python追加元素到列表的方法
Jul 28 Python
Python实现图片尺寸缩放脚本
Mar 10 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
May 04 Python
python删除文本中行数标签的方法
May 31 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
Dec 30 Python
django 自定义过滤器的实现
Feb 26 Python
Python 过滤错误log并导出的实例
Dec 26 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
Sep 18 Python
opencv python 对指针仪表读数识别的两种方式
Jan 14 Python
python os.listdir()乱码解决方案
Jan 31 Python
Python 图片添加美颜效果
Apr 28 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
虚拟主机中对PHP的特殊设置
2006/10/09 PHP
php socket方式提交的post详解
2008/07/19 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
javascript入门基础之私有变量
2010/02/23 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
2013/11/07 Javascript
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
2017/03/02 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
2017/12/21 Javascript
详解微信小程序调用支付接口支付
2019/04/28 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
Python+matplotlib实现华丽的文本框演示代码
2018/01/22 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
Python实现微信机器人的方法
2019/09/06 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
DogBuddy荷兰:找到你最完美的狗保姆
2019/04/17 全球购物
儿子婚宴答谢词
2014/01/09 职场文书
学生会离职感言
2014/02/11 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
爱护公物主题班会
2015/08/17 职场文书
【DOTA2】当街暴打?PSG LGD vs VG - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
《英雄联盟》2022日蚀、月蚀皮肤演示 黑潮亚索曝光
2022/04/13 其他游戏
mysql全面解析json/数组
2022/07/07 MySQL
HttpClient实现文件上传功能
2022/08/14 Java/Android