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调用windows api锁定计算机示例
Apr 17 Python
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
Apr 05 Python
Python 序列的方法总结
Oct 18 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
Nov 06 Python
Django csrf 两种方法设置form的实例
Feb 03 Python
python gdal安装与简单使用
Aug 01 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
Aug 15 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
Python操作qml对象过程详解
Sep 26 Python
python实现淘宝购物系统
Oct 25 Python
Python中使用Lambda函数的5种用法
Apr 01 Python
利用Python实现模拟登录知乎
May 25 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入门学习的几个不错的实例代码
2008/07/13 PHP
深入解析php中的foreach函数
2013/08/31 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
Laravel timestamps 设置为unix时间戳的方法
2019/10/11 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
浅谈JavaScript的函数及作用域
2016/12/30 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
深入解析Python中的WSGI接口
2015/05/11 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
python中hashlib模块用法示例
2017/10/30 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
详解如何减少python内存的消耗
2019/08/09 Python
Python while true实现爬虫定时任务
2020/06/08 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
研究生毕业鉴定
2014/01/29 职场文书
意向书范文
2014/03/31 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
个人四风对照检查材料
2014/09/26 职场文书
防火标语大全
2014/10/06 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
单身申明具结书
2015/02/26 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
欠条范文
2015/07/03 职场文书
JavaScript实现简单图片切换
2021/04/29 Javascript