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写的ARP攻击代码实例
Jun 04 Python
Python处理PDF及生成多层PDF实例代码
Apr 24 Python
Python编程pygal绘图实例之XY线
Dec 09 Python
TensorFlow实现AutoEncoder自编码器
Mar 09 Python
Django实现表单验证
Sep 08 Python
详解python中的线程与线程池
May 10 Python
python面试题之列表声明实例分析
Jul 08 Python
TensorFlow梯度求解tf.gradients实例
Feb 04 Python
Python获取二维数组的行列数的2种方法
Feb 11 Python
通过python连接Linux命令行代码实例
Feb 18 Python
python 实现两个线程交替执行
May 02 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 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
COM in PHP (winows only)
2006/10/09 PHP
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
php判断当前用户已在别处登录的方法
2015/01/06 PHP
php简单操作mysql数据库的类
2015/04/16 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
PDO操作MySQL的基础教程(推荐)
2017/08/18 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
深入理解Javascript闭包 新手版
2010/12/28 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
详解jQuery中的事件
2016/12/14 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
vue实现购物车抛物线小球动画效果的方法详解
2019/02/13 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
2019/04/15 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
Python操作mongodb的9个步骤
2018/06/04 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
详解Python中的测试工具
2019/06/09 Python
Python中请不要再用re.compile了
2019/06/30 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
python实现模拟器爬取抖音评论数据的示例代码
2021/01/06 Python
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
材料工程专业毕业生求职信
2014/03/04 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
农贸批发市场管理制度
2015/08/07 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
Django框架中表单的用法
2022/06/10 Python