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对数组进行反转的方法
May 20 Python
在Python的Django框架中为代码添加注释的方法
Jul 16 Python
使用Python的Tornado框架实现一个Web端图书展示页面
Jul 11 Python
Django基于ORM操作数据库的方法详解
Mar 27 Python
使用python编写udp协议的ping程序方法
Apr 22 Python
matplotlib给子图添加图例的方法
Aug 03 Python
Pytorch之view及view_as使用详解
Dec 31 Python
python如何基于redis实现ip代理池
Jan 17 Python
TensorFlow梯度求解tf.gradients实例
Feb 04 Python
python实现交并比IOU教程
Apr 16 Python
使用keras实现densenet和Xception的模型融合
May 23 Python
实例讲解Python中sys.argv[]的用法
Jun 03 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
实现 win2003 下 mysql 数据库每天自动备份
2006/12/06 PHP
PHP5 面向对象(学习记录)
2009/12/02 PHP
Php获取金书网的书名的实现代码
2010/06/11 PHP
php数组中删除元素之重新索引的方法
2014/09/16 PHP
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
jQuery 使用手册(一)
2009/09/23 Javascript
Jquery 切换不同图片示例代码
2013/12/05 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
2016/06/08 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
js面向对象编程总结
2017/02/16 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
python编程嵌套函数实例代码
2018/02/11 Python
Python简单生成随机数的方法示例
2018/03/31 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
python 实现按对象传值
2019/12/26 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
python suds访问webservice服务实现
2020/06/26 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
装饰公司活动策划方案
2014/08/23 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书