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模拟登陆阿里妈妈生成商品推广链接
Apr 03 Python
手动实现把python项目发布为exe可执行程序过程分享
Oct 23 Python
深入浅析Python中的yield关键字
Jan 24 Python
python tkinter库实现气泡屏保和锁屏
Jul 29 Python
python web框架 django wsgi原理解析
Aug 20 Python
关于pytorch处理类别不平衡的问题
Dec 31 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
Jun 04 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 Python
Python turtle实现贪吃蛇游戏
Jun 18 Python
Python socket如何解析HTTP请求内容
Feb 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利用header函数下载各种文件
2016/08/24 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
js下将字符串当函数执行的方法
2011/07/13 Javascript
js切换div css注意的细节
2012/12/10 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
JavaScript中var、let、const区别浅析
2018/06/24 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
python机器学习理论与实战(二)决策树
2018/01/19 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
Python try except else使用详解
2021/01/12 Python
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
C#面试常见问题
2013/02/25 面试题
无毒社区工作方案
2014/05/23 职场文书
欢度春节标语
2014/07/01 职场文书
员工工作自我评价
2014/09/26 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
加薪通知
2015/04/25 职场文书
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫
MySQL数据库 任意ip连接方法
2022/05/20 MySQL