python - 关于 tf.function 的跟踪是什么

标签 python tensorflow tensorflow2.0 eager-execution

TensorFlow 的指南中经常提到“跟踪”这个词,例如 Better performance with tf.function

  • 究竟什么是“跟踪”,它是指生成图形作为结果
    第一次调用 tf.function(随后
    取决于论点)?
  • 当只有部分计算被注释时会发生什么@tf.function ,它会将渴望执行与图形执行混合在一起吗?
  • 最佳答案

  • 是的,“跟踪”意味着运行 Python 函数并在图中“记录”其 TensorFlow 操作。请注意,如果 Autograph 执行了一些转换,则跟踪代码可能与编写的 Python 代码不完全对应。跟踪理想情况下只进行一次,第一次调用函数,因此后续调用可以直接使用跟踪图并保存 Python 代码执行。但是,正如您所说, future 的调用可能需要根据给定的参数重新跟踪函数,如您发布的链接中所述。
  • 您可以调用@tf.function来自在急切模式下工作的功能,在这种情况下,是的,它会“混合”两种模式。但是如果你从 @tf.function 调用一个未注释的函数,那么它的代码也将被追踪——也就是说,你不能从 @tf.function 中暂时返回到 Eager/Python 模式。 .这就是为什么在某些时候,有人建议您只需要注释更高级别的函数,因为无论如何,较低级别的函数也会被“绘制” - 尽管它何时应该或何时不是那么明确不应注解函数,见 Should I use @tf.function for all functions?this GitHub discussion .

  • 编辑:当我说“你不能从 @tf.function 中暂时回到 Eager/Python 模式”时,我的意思是 @tf.function无法退出“跟踪”模式。当然,使用 tf.numpy_function tf.py_function 您可以拥有一个使用 Eager/Python 模式的跟踪函数,它将作为跟踪图的一部分封装在一个操作中。

    关于python - 关于 tf.function 的跟踪是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62704906/

    相关文章:

    python-3.x - 属性错误 : 'tuple' object has no attribute 'type' upon importing tensorflow

    python - tensorflow 2.0.0 中 tf.one_hot 的等价物是什么

    python - 如何在tensorflow v2中启用cuda统一内存

    python - 如何将 string.format 与嵌套字典一起使用

    Python:我可以安全地解开不受信任的数据吗?

    python - Python中用一个字符表示多个值

    python - reshape .cc :55 stretch_dim ! = -1。节点号 X (RESHAPE) 准备失败

    Python:按数量级对列表进行分类

    python - 在 Ubuntu 16.04 上安装 Tensorflow

    tensorflow2.0 - Tensorflow 2.X 错误 - 在 Colab 上运行的二进制文件中未注册 Op 类型 'CaseFoldUTF8'