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的Treq on Twisted来进行HTTP压力测试
Apr 16 Python
利用Python读取文件的四种不同方法比对
May 18 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
Nov 23 Python
Python使用遗传算法解决最大流问题
Jan 29 Python
解决python3中cv2读取中文路径的问题
Dec 05 Python
Python之列表实现栈的工作功能
Jan 28 Python
Python空间数据处理之GDAL读写遥感图像
Aug 01 Python
Python装饰器用法与知识点小结
Mar 09 Python
利用python在excel中画图的实现方法
Mar 17 Python
怎么快速自学python
Jun 22 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
Dec 01 Python
Python 带星号(* 或 **)的函数参数详解
Feb 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
PHP4实际应用经验篇(8)
2006/10/09 PHP
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
AngularJS基础 ng-repeat 指令简单示例
2016/08/03 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
基于VUE实现简单的学生信息管理系统
2021/01/13 Vue.js
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
[26:21]浴火之凤-TI4世界冠军Newbee战队纪录片
2014/08/07 DOTA
Django中模型Model添加JSON类型字段的方法
2015/06/17 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
Python3.x对JSON的一些操作示例
2017/09/01 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
Python构建图像分类识别器的方法
2019/01/12 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
解决python线程卡死的问题
2019/02/18 Python
详解Python打包分发工具setuptools
2019/08/05 Python
PyQt实现计数器的方法示例
2021/01/18 Python
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
编程用JAVA解析XML的方式
2013/07/07 面试题
办理生育手续介绍信
2014/01/14 职场文书
主办会计岗位职责
2014/03/13 职场文书
鸿星尔克广告词
2014/03/21 职场文书
新书发布会策划方案
2014/06/09 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
创业计划书之烤红薯
2019/09/26 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
React列表栏及购物车组件使用详解
2021/06/28 Javascript