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实现删除Android工程中的冗余字符串
Jan 19 Python
python SSH模块登录,远程机执行shell命令实例解析
Jan 12 Python
Python3.x爬虫下载网页图片的实例讲解
May 22 Python
Python实现ping指定IP的示例
Jun 04 Python
python实现批量解析邮件并下载附件
Jun 19 Python
python实现给scatter设置颜色渐变条colorbar的方法
Dec 13 Python
python射线法判断检测点是否位于区域外接矩形内
Jun 28 Python
python读取大文件越来越慢的原因与解决
Aug 08 Python
Python selenium页面加载慢超时的解决方案
Mar 18 Python
解决IDEA 的 plugins 搜不到任何的插件问题
May 04 Python
python 动态渲染 mysql 配置文件的示例
Nov 20 Python
python 网络编程要点总结
Jun 18 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
javascript Xml增删改查(IE下)操作实现代码
2009/01/30 Javascript
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
你的 mixin 真的兼容 ECMAScript 5 吗?
2013/04/11 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
js如何实现淡入淡出效果
2020/11/18 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
Immutable 在 JavaScript 中的应用
2016/05/02 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
python命令行工具Click快速掌握
2019/07/04 Python
python怎么对数字进行过滤
2020/07/05 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
法国最大的在线眼镜店:EasyLunettes
2019/08/26 全球购物
《金子》教学反思
2014/04/13 职场文书
工作失职检讨书
2015/01/26 职场文书
公司租车协议书
2015/01/29 职场文书
JS 基本概念详细介绍
2021/10/16 Javascript