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中分数的相关使用教程
Mar 30 Python
Python 3.x 新特性及10大变化
Jun 12 Python
用Python将IP地址在整型和字符串之间轻松转换
Mar 22 Python
Django自定义过滤器定义与用法示例
Mar 22 Python
HTML的form表单和django的form表单
Jul 25 Python
python离线安装外部依赖包的实现
Feb 13 Python
Python3.6 中的pyinstaller安装和使用教程
Mar 16 Python
python实现ftp文件传输系统(案例分析)
Mar 20 Python
keras处理欠拟合和过拟合的实例讲解
May 25 Python
Keras搭建自编码器操作
Jul 03 Python
CocosCreator ScrollView优化系列之分帧加载
Apr 14 Python
Python机器学习之底层实现KNN
Jun 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生成自定义长度随机字符串的函数分享
2014/05/04 PHP
smarty实现多级分类的方法
2014/12/05 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
JQuery UI皮肤定制
2009/07/27 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
基于jQuery实现点击列表加载更多效果
2016/05/31 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
深入koa-bodyparser原理解析
2019/01/16 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
Python文档生成工具pydoc使用介绍
2015/06/02 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
Django如何实现网站注册用户邮箱验证功能
2019/08/14 Python
Python pickle模块实现对象序列化
2019/11/22 Python
对Pytorch中Tensor的各种池化操作解析
2020/01/03 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
Python IDLE或shell中切换路径的操作
2020/03/09 Python
解决python对齐错误的方法
2020/07/16 Python
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
优良学风班总结材料
2014/02/08 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
公务员个人年终总结
2015/02/12 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
Win2008系统搭建DHCP服务器
2022/06/25 Servers