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 del()函数用法
Mar 24 Python
解决Python 遍历字典时删除元素报异常的问题
Sep 11 Python
Tensorflow简单验证码识别应用
May 25 Python
python深度优先搜索和广度优先搜索
Feb 07 Python
python获取时间及时间格式转换问题实例代码详解
Dec 06 Python
Python识别快递条形码及Tesseract-OCR使用详解
Jul 15 Python
Python  Django 母版和继承解析
Aug 09 Python
django认证系统实现自定义权限管理的方法
Aug 28 Python
python 实现Flask中返回图片流给前端展示
Jan 09 Python
python 连续不等式语法糖实例
Apr 15 Python
python如何控制进程或者线程的个数
Oct 16 Python
python文件与路径操作神器 pathlib
Apr 01 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
linux命令之调试工具strace的深入分析
2013/06/03 PHP
PHP中数组定义的几种方法
2013/09/01 PHP
ThinkPHP字符串函数及常用函数汇总
2014/07/18 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
JavaScript OOP类与继承
2009/11/15 Javascript
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
js+HTML5实现视频截图的方法
2015/06/16 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
Node.js检测端口(port)是否被占用的简单示例
2016/09/29 Javascript
js转换对象为xml
2017/02/17 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
大都会艺术博物馆商店:The Met Store
2018/06/22 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
销售人员个人求职信
2013/09/26 职场文书
保洁主管岗位职责
2013/11/20 职场文书
关于赌博的检讨书
2014/01/24 职场文书
节水倡议书范文
2014/04/15 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python