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获取CPU、内存和硬盘等windowns系统信息的2个例子
Apr 15 Python
Python中格式化format()方法详解
Apr 01 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
python使用TensorFlow进行图像处理的方法
Feb 28 Python
python3安装pip3(install pip3 for python 3.x)
Apr 03 Python
浅谈Pandas 排序之后索引的问题
Jun 07 Python
python实现电子产品商店
Feb 26 Python
python实现批量视频分帧、保存视频帧
May 31 Python
Django实现后台上传并显示图片功能
May 29 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
Python实现简单猜数字游戏
Feb 03 Python
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 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 和 HTML
2006/10/09 PHP
PHP开发中常用的字符串操作函数
2011/02/08 PHP
PHP三元运算符的结合性介绍
2012/01/10 PHP
php生成数组的使用示例 php全组合算法
2014/01/16 PHP
PHP小教程之实现链表
2014/06/09 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
laravel 解决crontab不执行的问题
2019/10/22 PHP
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
JS实现的倒计时效果实例(2则实例)
2015/12/23 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
python的Template使用指南
2014/09/11 Python
Windows下用py2exe将Python程序打包成exe程序的教程
2015/04/08 Python
介绍Python的Urllib库的一些高级用法
2015/04/30 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
Python3爬虫之自动查询天气并实现语音播报
2019/02/21 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
yy生日主持词
2014/03/20 职场文书
物流专业求职信
2014/06/30 职场文书
给上级领导的感谢信
2015/01/22 职场文书
重阳节慰问信
2015/02/15 职场文书
如何利用js在两个html窗口间通信
2021/04/27 Javascript
Redis 配置文件重要属性的具体使用
2021/05/20 Redis