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变量和数据类型详解
Feb 15 Python
python SMTP实现发送带附件电子邮件
May 22 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
Nov 25 Python
python 实现按对象传值
Dec 26 Python
pytorch模型预测结果与ndarray互转方式
Jan 15 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
python os.rename实例用法详解
Dec 06 Python
Python try except else使用详解
Jan 12 Python
Python Pandas知识点之缺失值处理详解
May 11 Python
golang特有程序结构入门教程
Jun 02 Python
Django对接elasticsearch实现全文检索的示例代码
Aug 02 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中处理模拟rewrite 效果
2006/12/09 PHP
IE6下JS动态设置图片src地址问题
2010/01/08 Javascript
js获取当前select 元素值的代码
2010/04/19 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
js 页面元素的几个用法总结
2013/11/18 Javascript
Javascript毫秒数用法实例
2015/02/05 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
2016/10/10 Javascript
javascript中Date对象的使用总结
2016/11/21 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
Python正则获取、过滤或者替换HTML标签的方法
2016/01/28 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
2019/01/05 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
python实现电子产品商店
2019/02/26 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
简单了解python代码优化小技巧
2019/07/08 Python
Python 如何提高元组的可读性
2019/08/26 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
Linux中如何用命令创建目录
2016/12/02 面试题
农业资源与环境专业自荐信范文
2013/12/30 职场文书
文明教师事迹材料
2014/01/16 职场文书
水果连锁超市创业计划书
2014/01/24 职场文书
留学推荐信中文范文三篇
2014/01/25 职场文书
2014年护理部工作总结
2014/11/14 职场文书
给客户的检讨书
2014/12/21 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
python基于opencv批量生成验证码的示例
2021/04/28 Python