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对IP进行转换的一些操作技巧小结
Nov 09 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
微信跳一跳小游戏python脚本
Jan 05 Python
python 中if else 语句的作用及示例代码
Mar 05 Python
Pandas标记删除重复记录的方法
Apr 08 Python
pandas通过loc生成新的列方法
Nov 28 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
django drf框架自带的路由及最简化的视图
Sep 10 Python
python 利用jinja2模板生成html代码实例
Oct 10 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
Jan 08 Python
python sitk.show()与imageJ结合使用常见的问题
Apr 20 Python
python开根号实例讲解
Aug 30 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
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
session 加入redis的实现代码
2016/07/15 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
将nodejs打包工具整合到鼠标右键的方法
2013/05/11 NodeJs
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
微信小程序实现留言板功能
2018/11/02 Javascript
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
使用python加密自己的密码
2015/08/04 Python
遗传算法python版
2018/03/19 Python
Python XlsxWriter模块Chart类用法实例分析
2019/03/11 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
CSS3新属性transition-property transform box-shadow实例学习
2013/06/06 HTML / CSS
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
入党思想汇报
2014/01/05 职场文书
手工社团活动方案
2014/02/17 职场文书
大学生学习计划书
2014/09/15 职场文书
体育活动总结
2015/02/04 职场文书
人事行政部各岗位职责说明书!
2019/07/15 职场文书
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS