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 相关文章推荐
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 Python
django ajax json的实例代码
May 29 Python
python实现图片筛选程序
Oct 24 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
Python基于OpenCV实现人脸检测并保存
Jul 23 Python
Django 实现admin后台显示图片缩略图的例子
Jul 28 Python
python文件处理fileinput使用方法详解
Jan 02 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 Python
Python-jenkins 获取job构建信息方式
May 12 Python
基于python图书馆管理系统设计实例详解
Aug 05 Python
matplotlib更改窗口图标的方法示例
Feb 03 Python
python数字图像处理数据类型及颜色空间转换
Jun 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
xml+php动态载入与分页
2006/10/09 PHP
PHP制作图型计数器的例子
2006/10/09 PHP
PHP新手上路(八)
2006/10/09 PHP
php 广告调用类代码(支持Flash调用)
2011/08/11 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
js实现checkbox全选和反选示例
2014/05/01 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
详解原生JS回到顶部
2019/03/25 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
2016/06/06 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
浅谈python的dataframe与series的创建方法
2018/11/12 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
python中numpy数组与list相互转换实例方法
2021/01/29 Python
纯CSS3实现移动端展开和收起效果的示例代码
2020/04/26 HTML / CSS
实习销售业务员自我鉴定
2013/09/21 职场文书
材料加工硕士生求职信
2013/10/10 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
2014企业年终工作总结
2014/12/23 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
2016年秋季趣味运动会开幕词
2016/03/04 职场文书
ztree+ajax实现文件树下载功能
2021/05/18 Javascript
详解Mysql和Oracle之间的误区
2021/05/18 MySQL