文章目录

  • 1.掌握什么是AutoGraph以及实现方式
  • 2.AutoGraph使用规范
  • 3.AutoGraph机制原理
  • 4.重新理解AutoGraph的编码规范
  • 5.AutoGraph使用案例

重点掌握什么是AutoGraph,以及在tf2.0中通过@tf.function实现,了解AutoGraph使用规范、机制原理

1.掌握什么是AutoGraph以及实现方式



2.AutoGraph使用规范




3.AutoGraph机制原理

使用@tf.function 装饰一个函数时:
第一件事是创建计算图
第二件事是执行计算图import tensorflow as tf
import numpy as np @tf.function(autograph=True)
def myadd(a,b):for i in tf.range(3):tf.print(i)c = a + b print('tracting')return c



4.重新理解AutoGraph的编码规范

了解了以上Autograph的机制原理,我们也就能够理解Autograph编码规范的3条建议了。1,被@tf.function修饰的函数应尽量使用TensorFlow中的函数而不是Python中的其他函数。例如使用
tf.print而不是print.解释:Python中的函数仅仅会在跟踪执行函数以创建静态图的阶段使用,普通Python函数是无法嵌入到静态
计算图中的,所以 在计算图构建好之后再次调用的时候,这些Python函数并没有被计算,而TensorFlow中
的函数则可以嵌入到计算图中。使用普通的Python函数会导致 被@tf.function修饰前【eager执行】和
被@tf.function修饰后【静态图执行】的输出不一致。2,避免在@tf.function修饰的函数内部定义tf.Variable.解释:如果函数内部定义了tf.Variable,那么在【eager执行】时,这种创建tf.Variable的行为在每次函
数调用时候都会发生。但是在【静态图执行】时,这种创建tf.Variable的行为只会发生在第一步跟踪Python
代码逻辑创建计算图时,这会导致被@tf.function修饰前【eager执行】和被@tf.function修饰后【静态图
执行】的输出不一致。实际上,TensorFlow在这种情况下一般会报错。3,被@tf.function修饰的函数不可修改该函数外部的Python列表或字典等数据结构变量。解释:静态计算图是被编译成C++代码在TensorFlow内核中执行的。Python中的列表和字典等数据结构变量
是无法嵌入到计算图中,它们仅仅能够在创建计算图时被读取,在执行计算图时是无法修改Python中的列表或
字典这样的数据结构变量的。

5.AutoGraph使用案例

AuroGraph的编码规范中,应避免在@tf.function修饰的函数内部定义tf.Variable,但定义在函数外部,又显得这个函数有外部变量依赖,封装不够完美一个简单地办法是定义一个类,并将相关的tf.Variable创建放在类的初始化方法中,而将函数的逻辑放在其他方法中Tensorflow提供了一个基类tf.Module,通过继承它构建子类,不仅可以获得以上的函数逻辑,而且可以方便地管理变量,还可以非常方便地管理它引用的其他Module,最重要的是,我们可以利用tf.saved_model保存模型并实现跨平台部署使用




复杂一点的



深度学习4-计算图机制详解相关推荐

  1. 深度学习网络模型——Vision Transformer详解 VIT详解

    深度学习网络模型--Vision Transformer详解 VIT详解 通用深度学习网络效果改进调参训练公司自己的数据集,训练步骤记录: 代码实现version-Transformer网络各个流程, ...

  2. 机器学习,深度学习基础算法原理详解(图的搜索、交叉验证、PAC框架、VC-维(持续更新))

    机器学习,深度学习基础算法原理详解(图的搜索.交叉验证.PAC框架.VC-维.支持向量机.核方法(持续更新)) 机器学习,深度学习基础算法原理详解(数据结构部分(持续更新)) 文章目录 1. 图的搜索 ...

  3. 深度学习网络模型——RepVGG网络详解、RepVGG网络训练花分类数据集整体项目实现

    深度学习网络模型--RepVGG网络详解.RepVGG网络训练花分类数据集整体项目实现 0 前言 1 RepVGG Block详解 2 结构重参数化 2.1 融合Conv2d和BN 2.2 Conv2 ...

  4. 三维深度学习之pointnet系列详解(一)

    目前二维深度学习取得了很大的进步并且应用范围越来越广,随着三维设备的发展,三维深度学习得到了很大的关注. 最近接触了三维深度学习方面的研究,从pointnet入手,对此有了一点点了解希望记录下来并分享 ...

  5. 独家总结| 基于深度学习的目标检测详解

    欢迎关注微信公众号[计算机视觉联盟] 获取更多前沿AI.CV资讯                                                基于深度学习的目标检测 基于深度学习的目 ...

  6. 【深度学习】Batch Normalization详解

    Batch Normalization 学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50866313 作者:hjimce 一.背景意义 ...

  7. 深度学习---循环神经网络RNN详解(LSTM)

    上一节我们详细讲解了RNN的其中一个学习算法即BPTT,这个算法是基于BP的,只是和BP不同的是在反向传播时,BPTT的需要追溯上一个时间的权值更新,如下图,当前时刻是s(t),但是反向传播时,他需要 ...

  8. Tomcat - 深度学习 - 类加器详解

    前言 Tomcat如何实现不同的应用程序,使用不同的第三方类库?带着疑问学下去 打破双亲委派 以Tomcat类加载为例,Tomcat 如果使用默认的双亲委派类加载机制行不行? 我们思考一下: Tomc ...

  9. 【深度学习神经网络】--BatchNorm详解

    A) 简单了解BN层 (In 30 seconds) Batch-Normalization (BN)是一种让神经网络训练更快.更稳定的方法(faster and more stable).它计算每个 ...

  10. 深度学习环境搭建超级详解(Miniconda、pytorch安装)

    小白刚开始学习<动手学深度学习>,第一次发文,本文主要是为了记录在环境搭建过程中遇到的问题和疑惑,以及解决方法,同时希望能帮到遇到相同问题的小伙伴. 在学习中遇到的疑惑和最后搜索得到的解答 ...

最新文章

  1. codeblocks调用matlab,matlab engine: 在Codeblocks中使用C++调用matlab | 学步园
  2. boot spring 怎么执行hql_彻底透析SpringBoot jar可执行原理
  3. k8s容器探针:就绪检测、存活检测
  4. php新闻列表页模块,PHP开发简单新闻发布系统之新闻列表页整体功能实现
  5. 使用JScript设置SVN客户端hook
  6. docker内程序如何读取dockerfile和compose.yml中设置的环境变量
  7. 改进了一下这个游戏的输出及思路,是不是好玩多了??:)
  8. 2016蓝桥杯C++A:消除尾一(二进制运算)
  9. list add java_list.add()和list.addAll()的区别
  10. 网站php镜像小偷,网站被镜像了怎么办?
  11. Webstorm中html无Vue语法提示
  12. matlab二元积分函数求导,多元函数求积分求导.ppt
  13. p1957口算题c语言,洛谷P1957口算练习题题解
  14. java 特殊字符_java中的常用特殊字符
  15. Win10专业版开机自动拨号
  16. 2019 年终总结,168 篇,已归类!
  17. Android 集成友盟统计
  18. 如何充分利用点赞功能提升Linkedin账号曝光率和活跃度
  19. 斐讯k1支持千兆吗_斐讯K2是不是千兆路由器
  20. HDU2037:今年暑假不AC

热门文章

  1. 试用版SQL Server 2008提示评估期已过 解决办法
  2. 【react】 react---项目的-----------简单路由配置
  3. SSH Mybatis 框架
  4. 通过指针获取输入的字符串
  5. 苹果新的编程语言 Swift 语言进阶(七)--枚举、结构、类
  6. 海思hi3518 移植live555 实现H264的RTSP播放
  7. TreeView 动态绑定数据及在当前节点操作
  8. 0311 Restoring the Factory Image
  9. 20172319 实验三《查找与排序》实验报告
  10. 开始使用Filebeat