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高手之路python处理excel文件(方法汇总)
Jan 07 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 Python
Python控制多进程与多线程并发数总结
Oct 26 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
Jan 24 Python
python3之模块psutil系统性能信息使用
May 30 Python
Scrapy使用的基本流程与实例讲解
Oct 21 Python
使用python读取.text文件特定行的数据方法
Jan 28 Python
python实现证件照换底功能
Aug 20 Python
使用Pandas的Series方法绘制图像教程
Dec 04 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
Python中的np.argmin()和np.argmax()函数用法
Jun 02 Python
python中的class_static的@classmethod的巧妙用法
Jun 22 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 安全过滤函数代码
2011/05/07 PHP
PHP中单引号与双引号的区别分析
2014/08/19 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
js 浮动层菜单收藏
2009/01/16 Javascript
基于jquery的文本框与autocomplete结合使用(asp.net+json)
2012/05/30 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
2017/04/08 jQuery
JavaScript数据结构之广义表的定义与表示方法详解
2017/04/12 Javascript
详解在Vue中有条件地使用CSS类
2017/09/30 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
Node.js Express安装与使用教程
2018/05/11 Javascript
JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法
2018/06/07 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
2020/07/31 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
python小技巧之批量抓取美女图片
2014/06/06 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
tensorflow使用神经网络实现mnist分类
2018/09/08 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
jupyter 添加不同内核的操作
2021/02/06 Python
numpy实现RNN原理实现
2021/03/02 Python
优秀广告词大全
2014/03/19 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
单位委托书怎么写
2014/08/02 职场文书
美术教师个人工作总结
2015/02/06 职场文书
入党个人总结范文
2015/03/02 职场文书
2015年物业管理工作总结
2015/04/23 职场文书