tensorflow - tf.py_function和tf.function在目的上有什么区别?

标签 tensorflow tensorflow2.0

尽管有什么渴望和什么不是什么的细微差别,但两者之间的差异却在我的脑海中迷惑了。据我所知,@tf.function装饰器在此方面有两个好处

  • 它将功能转换为TensorFlow图以提高性能,以及
  • 通过将许多(但不是全部)常用的Python运算解释为张量运算(例如tensor运算),从而提供了更加Pythonic的编码风格。将if转换为tf.cond等。

  • tf.py_function的定义来看,它似乎只是上面的#2。因此,当tf.py_function可以提高启动性能并且没有前者无法序列化时,为什么还要对tf.function感到困扰呢?

    最佳答案

    随着它们的改进,它们确实确实开始彼此相似,因此查看它们的来源很有用。最初的区别是:

  • @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
  • 关于tensorflow - tf.py_function和tf.function在目的上有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61564748/

    相关文章:

    python - TensorFlow 全连接教程 : How are the trained weights used for Eval and Test?

    python - Tensorflow (GPU) 与 Numpy

    python - 多维张量切片

    python - 添加不带参数的层后无法加载优化器权重

    python - 导入错误 : cannot import name 'Deconvolution3D' from 'keras.layers' (/home/mona/venv/fall/lib/python3. 8/site-packages/keras/layers/__init__.py)

    python-3.x - 如何训练 YOLO-Tensor flow 自己的数据集

    tensorflow - 使用 TFagents 的自定义环境

    python - 来自 tf.keras.preprocessing.image.ImageDataGenerator.flow_from_directory 的 tf.data.Dataset?

    python - 如何从 tf.dataset 打印样本记录?

    python - `tf.keras.Model.compile`在TF2.0中做什么?