【问题标题】:What is the difference in purpose between tf.py_function and tf.function?tf.py_function 和 tf.function 在用途上有什么区别?
【发布时间】:2020-05-02 18:55:19
【问题描述】:

尽管急切和不急切之间存在细微差别,但两者之间的区别在我的脑海中一直模糊不清。据我所知,@tf.function 装饰器有两个好处

  1. 它将函数转换为 TensorFlow 图以提高性能,并且
  2. 通过将许多(但不是全部)常见的 Python 操作解释为张量操作(例如if 变成 tf.cond 等。

tf.py_function 的定义来看,似乎只是上面的#2。因此,当tf.function 的工作在启动时性能得到提升并且没有前者无法序列化的情况下,为什么还要打扰tf.py_function

【问题讨论】:

    标签: tensorflow tensorflow2.0


    【解决方案1】:

    随着改进,它们确实开始彼此相似,因此了解它们的来源很有用。最初,不同之处在于:

    • @tf.function 将 python 代码转换为一系列 TensorFlow 图节点。
    • tf.py_function 将现有的 python 函数包装到单个图形节点中。

    这意味着tf.function 要求您的代码相对简单,而tf.py_function 可以处理任何python 代码,无论多么复杂。

    虽然这条线确实很模糊,tf.py_function 做了更多解释,tf.function 接受了大量复杂的 python 命令,但一般规则保持不变:

    • 如果您的 python 代码中的逻辑相对简单,请使用tf.function
    • 当您使用复杂代码时,例如大型外部库(例如连接到数据库或加载大型外部 NLP 包),请使用 tf.py_function

    【讨论】:

      猜你喜欢
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-26
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      相关资源
      最近更新 更多