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 重写。有两种方法可以实现这一点在全局作用域中定义函数(即在
pipeline_def
作用域之外)。如果函数是另一个“工厂”函数的结果,则工厂函数必须在 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 str 或 layout str 列表, 可选) –
输出的张量数据布局。
此参数可以是包含每个输出的不同布局的列表。如果列表的元素少于 num_outputs,则只有前几个输出设置了布局,其余输出没有分配布局。
preserve¶ (bool, 可选, 默认 = False) – 阻止操作符从图中移除,即使其输出未使用。