nvidia.dali.fn.dl_tensor_python_function#

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

执行在 DLPack 张量上运行的 Python 函数。

该函数不应修改输入张量。

对于 GPU 操作符,用户有责任将设备代码与 DALI 同步。为了将设备代码与 DALI 同步,在使用 synchronize_stream 标志(默认启用)调用操作符之前同步 DALI 的工作,并确保计划的设备任务在操作符调用中完成。GPU 代码可以在 DALI 使用的 CUDA 流上执行,可以通过调用 current_dali_stream() 函数获得。在这种情况下,synchronize_stream 标志可以设置为 False。

警告

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

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

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

支持的后端
  • ‘cpu’

  • ‘gpu’

参数:

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

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

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

    如果设置为 True,该函数将接收其参数作为 DLPack 张量列表。

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

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

    如果指定,则驻留在 GPU 或页锁定主机内存中的操作符输出将被预分配,以适应此大小的样本批次。

  • function (object) –

    定义操作符功能的可调用对象。

    警告

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

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

  • output_layouts (layout str 或 list of layout str, 可选) –

    输出的张量数据布局。

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

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

  • synchronize_stream (bool, 可选, 默认 = True) –

    确保 DALI 在调用 Python 函数之前同步其 CUDA 流。

    警告

    仅当被调用的函数将设备工作调度到 DALI 使用的流时,才应将此参数设置为 False。