TensorFlow的自动求导原理分析


Posted in Python onMay 26, 2021

原理:

TensorFlow使用的求导方法称为自动微分(Automatic Differentiation),它既不是符号求导也不是数值求导,而类似于将两者结合的产物。

最基本的原理就是链式法则,关键思想是在基本操作(op)的水平上应用符号求导,并保持中间结果(grad)

基本操作的符号求导定义在\tensorflow\python\ops\math_grad.py文件中,这个文件中的所有函数都用RegisterGradient装饰器包装了起来,这些函数都接受两个参数op和grad,参数op是操作,第二个参数是grad是之前的梯度。

链式求导代码:

TensorFlow的自动求导原理分析

举个例子:

TensorFlow的自动求导原理分析

TensorFlow的自动求导原理分析

TensorFlow的自动求导原理分析

TensorFlow的自动求导原理分析

TensorFlow的自动求导原理分析

TensorFlow的自动求导原理分析

TensorFlow的自动求导原理分析

TensorFlow的自动求导原理分析

TensorFlow的自动求导原理分析

TensorFlow的自动求导原理分析

TensorFlow的自动求导原理分析

TensorFlow的自动求导原理分析

TensorFlow的自动求导原理分析

补充:聊聊Tensorflow自动求导机制

自动求导机制

在即时执行模式下,Tensorflow引入tf.GradientTape()这个“求导记录器”来实现自动求导。

计算函数y(x)=x^2在x = 3时的导数:

import tensorflow as tf
#定义变量
x = tf.Variable(initial_value = 3.)

#在tf.GradientTape()的上下文内,所有计算步骤都会被记录以用于求导
with tf.GradientTape() as tape:
    #y = x^2
    y = tf.square(x)
#计算y关于x的导数(斜率,梯度)
y_grad = tape.gradient(y,x)
print([y,y_grad])

输出:

[<tf.Tensor: shape=(), dtype=float32, numpy=9.0>, <tf.Tensor: shape=(), dtype=float32, numpy=6.0>]

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python中的日志模块logging
Jun 19 Python
利用python获取Ping结果示例代码
Jul 06 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
python在每个字符后添加空格的实例
May 07 Python
python调用Matplotlib绘制分布点并且添加标签
May 31 Python
Python设置在shell脚本中自动补全功能的方法
Jun 25 Python
详解python 3.6 安装json 模块(simplejson)
Apr 02 Python
python调用摄像头拍摄数据集
Jun 01 Python
python系列 文件操作的代码
Oct 06 Python
基于python实现简单网页服务器代码实例
Sep 14 Python
通过代码实例了解Python异常本质
Sep 16 Python
用python开发一款操作MySQL的小工具
May 12 Python
Django分页器的用法你都了解吗
May 26 #Python
tensorflow中的梯度求解及梯度裁剪操作
May 26 #Python
python numpy中multiply与*及matul 的区别说明
May 26 #Python
python文本处理的方案(结巴分词并去除符号)
Django操作cookie的实现
May 26 #Python
pandas中DataFrame检测重复值的实现
python 中的@运算符使用
May 26 #Python
You might like
php 删除cookie方法详解
2014/12/01 PHP
thinkphp配置连接数据库技巧
2014/12/02 PHP
PHP图片加水印实现方法
2016/05/06 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
2017/07/10 PHP
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
2013/11/25 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
2020/03/26 Javascript
对python:threading.Thread类的使用方法详解
2019/01/31 Python
python实现比较类的两个instance(对象)是否相等的方法分析
2019/06/26 Python
python 实现两个线程交替执行
2020/05/02 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
德国箱包网上商店:koffer24.de
2016/07/27 全球购物
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
后勤副校长自我鉴定
2013/10/13 职场文书
小学作文评语大全
2014/04/21 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
门市房租房协议书
2014/12/04 职场文书
运动会观后感
2015/06/09 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
Vue实现导入Excel功能步骤详解
2021/07/03 Vue.js
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python