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中使用smtplib和email模块发送邮件实例
Apr 22 Python
Python自动重试HTTP连接装饰器
Apr 28 Python
windows下安装Python和pip终极图文教程
Mar 05 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
Python socket实现简单聊天室
Apr 01 Python
Python IDLE清空窗口的实例
Jun 25 Python
Python实现深度遍历和广度遍历的方法
Jan 22 Python
Python创建或生成列表的操作方法
Jun 19 Python
基于 Django 的手机管理系统实现过程详解
Aug 16 Python
Python发送邮件的实例代码讲解
Oct 16 Python
Python定时从Mysql提取数据存入Redis的实现
May 03 Python
python 绘制国旗的示例
Sep 27 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
帮助避免错误的Javascript陷阱清单
2009/05/31 Javascript
javascript中定义类的方法汇总
2014/12/28 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
基于hover的用法实例(推荐)
2017/07/04 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
2017/07/17 Javascript
纯js实现图片匀速淡入淡出效果
2017/08/22 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
函数式编程入门实践(一)
2019/04/20 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
python中去空格函数的用法
2014/08/21 Python
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
Python中用Decorator来简化元编程的教程
2015/04/13 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
Hibernate持久层技术
2013/12/16 面试题
银行介绍信范文
2014/01/10 职场文书
大专毕业生求职信
2014/07/05 职场文书
医德医风自我评价
2014/09/19 职场文书
县级领导干部开展党的群众路线教育实践活动工作汇报
2014/10/25 职场文书
保证金退回承诺函格式
2015/01/21 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
二年级作文之动物作文
2019/11/13 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
在python中实现导入一个需要传参的模块
2021/05/12 Python