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脚本实现下载合并SAE日志
Feb 10 Python
讲解Python中fileno()方法的使用
May 24 Python
python多进程中的内存复制(实例讲解)
Jan 05 Python
python如何为被装饰的函数保留元数据
Mar 21 Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
Python数据报表之Excel操作模块用法分析
Mar 11 Python
Django框架使用内置方法实现登录功能详解
Jun 12 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
python烟花效果的代码实例
Feb 25 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
Mar 01 Python
Python *args和**kwargs用法实例解析
Mar 02 Python
pytorch中[..., 0]的用法说明
May 20 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 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
php入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
PHP抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
理解Javascript_06_理解对象的创建过程
2010/10/15 Javascript
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
jquery Mobile入门—外部链接切换示例代码
2013/01/08 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
2017/05/03 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
解决Layui中layer报错的问题
2019/09/03 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
python实现udp数据报传输的方法
2014/09/26 Python
深入解析Python中的WSGI接口
2015/05/11 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
使用Python脚本从文件读取数据代码实例
2020/01/19 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
Python dict和defaultdict使用实例解析
2020/03/12 Python
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
一道输出判断型Java面试题
2014/10/01 面试题
员工薪酬福利制度
2014/01/17 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python
WCG2010 星际争霸决赛 Flash vs Goojila 1 星际经典比赛回顾
2022/04/01 星际争霸