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。