nvidia.dali.fn.python_function#

nvidia.dali.fn.python_function(*input, batch_processing=False, bytes_per_sample_hint=[0], function, num_outputs=1, output_layouts=None, preserve=False, device=None, name=None)#

执行 Python 函数。

此操作符可用于在 DALI pipeline 中执行自定义 Python 代码。该函数接收来自 DALI 的数据,对于 CPU 操作符,数据为 NumPy 数组,对于 GPU 操作符,数据为 CuPy 数组。它应以相同的格式返回结果。对于更通用的数据格式,请参阅 nvidia.dali.fn.dl_tensor_python_function()。该函数不应修改输入张量。

警告

此操作符与 TensorFlow 集成不兼容。

警告

当 pipeline 启用条件执行时,必须采取额外的步骤来防止 function 被 AutoGraph 重写。有两种方法可以实现这一点

  1. 在全局作用域中定义函数(即在 pipeline_def 作用域之外)。

  2. 如果函数是另一个“工厂”函数的结果,则工厂函数必须在 pipeline 定义函数之外定义,并使用 @do_not_convert 修饰。

更多详细信息可以在 @do_not_convert 文档中找到。

此操作符允许序列输入并支持体积数据。

此操作符将 不会 从图中优化掉。

支持的后端
  • ‘cpu’

  • ‘gpu’

参数:

__input_[0..255] (TensorList, 可选) – 此函数最多接受 256 个可选的位置输入

关键词参数:
  • batch_processing (bool, 可选, 默认 = False) –

    确定是为每个批次调用一次函数,还是为批次中的每个样本单独调用。

    如果设置为 True,该函数将接收其参数作为 NumPy 或 CuPy 数组列表,分别用于 CPU 和 GPU 后端。

  • bytes_per_sample_hint (int 或 int 列表, 可选, 默认 = [0]) –

    输出大小提示,以字节/样本为单位。

    如果指定,则位于 GPU 或页锁定主机内存中的操作符输出将被预先分配,以容纳此大小的样本批次。

  • function (object) –

    定义操作符函数的可调用对象。

    警告

    该函数不得持有对其使用的 pipeline 的引用。如果持有,将形成对 pipeline 的循环引用,并且 pipeline 将永远不会被释放。

  • num_outputs (int, 可选, 默认 = 1) – 输出数量。

  • output_layouts (layout strlayout str 列表, 可选) –

    输出的张量数据布局。

    此参数可以是包含每个输出的不同布局的列表。如果列表的元素少于 num_outputs,则只有前几个输出设置了布局,其余输出没有分配布局。

  • preserve (bool, 可选, 默认 = False) – 阻止操作符从图中移除,即使其输出未使用。