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 continue语句用法实例
Mar 11 Python
Python实现的监测服务器硬盘使用率脚本分享
Nov 07 Python
使用基于Python的Tornado框架的HTTP客户端的教程
Apr 24 Python
简单谈谈Python中函数的可变参数
Sep 02 Python
python 每天如何定时启动爬虫任务(实现方法分享)
May 21 Python
在pycharm 中添加运行参数的操作方法
Jan 19 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
Jul 01 Python
Django的用户模块与权限系统的示例代码
Jul 24 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
Aug 06 Python
使用python实现回文数的四种方法小结
Nov 24 Python
python检查目录文件权限并修改目录文件权限的操作
Mar 11 Python
浅谈Python 中的复数问题
May 19 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读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
PHP使用xpath解析XML的方法详解
2017/05/20 PHP
PHP新特性详解之命名空间、性状与生成器
2017/07/18 PHP
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
js中switch case循环实例代码
2013/12/30 Javascript
js中substring和substr的定义和用法
2014/05/05 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
python itchat实现微信自动回复的示例代码
2017/08/14 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
python清空命令行方式
2020/01/13 Python
公司周年庆典邀请函
2014/01/12 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
运动会稿件100字
2014/09/24 职场文书
毕业生登记表班级意见
2015/06/05 职场文书
运动会800米赞词
2015/07/22 职场文书
三十年同学聚会致辞
2015/07/28 职场文书
班委竞选稿范文
2015/11/21 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
Vue vee-validate插件的简单使用
2021/06/22 Vue.js
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL
速龙x4-860k处理器相当于i几
2022/04/20 数码科技