PaddlePaddle 插件 API 参考#

class nvidia.dali.plugin.paddle.DALIClassificationIterator(pipelines, size=-1, reader_name=None, auto_reset=False, fill_last_batch=None, dynamic_shape=False, last_batch_padded=False, last_batch_policy=LastBatchPolicy.FILL, prepare_first_batch=True)#

用于 Paddle 分类任务的 DALI 迭代器。它以 LoDTensor 的形式返回 2 个输出(数据和标签)。

调用

DALIClassificationIterator(pipelines, reader_name)

等效于调用

DALIGenericIterator(pipelines, ["data", "label"], reader_name)
参数:
  • pipelines (list of Pipeline) – 要使用的 Pipeline 列表

  • size (int, default = -1) – 包装的 Pipeline 的分片中的样本数(如果超过一个,则为总和)。提供 -1 意味着迭代器将工作到从 iter_setup() 内部引发 StopIteration 为止。选项 last_batch_policylast_batch_padded 在这种情况下不起作用。它仅适用于迭代器内部的一个 Pipeline。与 reader_name 参数互斥

  • reader_name (str, default = None) – 读取器的名称,将查询该读取器的分片大小、分片数以及所有其他属性,这些属性对于正确计数迭代器需要处理的相关和填充样本数是必要的。它会自动设置 last_batch_padded,以与读取器的配置相匹配。

  • auto_reset (string or bool, optional, default = False) –

    迭代器是否为下一个 epoch 重置自身,或者是否需要显式调用 reset()。

    它可以是以下值之一

    • "no", FalseNone - 在 epoch 结束时,引发 StopIteration,并且需要调用 reset()

    • "yes""True"- 在 epoch 结束时,引发 StopIteration,但在内部自动调用 reset()

  • dynamic_shape (any, optional,) – 仅用于向后兼容的参数。

  • fill_last_batch (bool, optional, default = None) –

    已弃用 请改用 last_batch_policy

    是否用数据填充最后一个批次,直到 ‘self.batch_size’。迭代器将返回第一个整数倍的 self._num_gpus * self.batch_size 条目,该条目超过 ‘size’。将此标志设置为 False 将导致迭代器返回正好 ‘size’ 条目。

  • last_batch_policy (optional, default = LastBatchPolicy.FILL) – 当 epoch 中没有足够的样本来完全填充最后一个批次时,该怎么做。请参阅 nvidia.dali.plugin.base_iterator.LastBatchPolicy()

  • last_batch_padded (bool, optional, default = False) – DALI 提供的最后一个批次是否用最后一个样本填充,或者只是包装起来。与 last_batch_policy 结合使用,它会告知迭代器返回的最后一个批次是否仅部分填充了当前 epoch 的数据,是删除填充样本还是来自下一个 epoch 的样本。如果设置为 False,则下一个 epoch 将提前结束,因为来自它的数据已被消耗但已丢弃。如果设置为 True,则下一个 epoch 将与第一个 epoch 的长度相同。为此,还需要将读取器中的 pad_last_batch 选项设置为 True。当提供 reader_name 参数时,它将被覆盖

  • prepare_first_batch (bool, optional, default = True) – DALI 是否应在创建迭代器后立即缓冲第一个批次,以便在提示迭代器获取数据时已准备好一个批次

示例

对于数据集 [1,2,3,4,5,6,7] 和批次大小 2

last_batch_policy = LastBatchPolicy.PARTIAL, last_batch_padded = True -> 最后一个批次 = [7],下一次迭代将返回 [1, 2]

last_batch_policy = LastBatchPolicy.PARTIAL, last_batch_padded = False -> 最后一个批次 = [7],下一次迭代将返回 [2, 3]

last_batch_policy = LastBatchPolicy.FILL, last_batch_padded = True -> 最后一个批次 = [7, 7],下一次迭代将返回 [1, 2]

last_batch_policy = LastBatchPolicy.FILL, last_batch_padded = False -> 最后一个批次 = [7, 1],下一次迭代将返回 [2, 3]

last_batch_policy = LastBatchPolicy.DROP, last_batch_padded = True -> 最后一个批次 = [5, 6],下一次迭代将返回 [1, 2]

last_batch_policy = LastBatchPolicy.DROP, last_batch_padded = False -> 最后一个批次 = [5, 6],下一次迭代将返回 [2, 3]

checkpoints()#

返回 Pipeline 的当前检查点。

next()#

返回下一批数据。

reset()#

在完整 epoch 后重置迭代器。DALI 迭代器不支持在 epoch 结束前重置,并将忽略此类请求。

property size#
class nvidia.dali.plugin.paddle.DALIGenericIterator(pipelines, output_map, size=-1, reader_name=None, auto_reset=False, fill_last_batch=None, dynamic_shape=False, last_batch_padded=False, last_batch_policy=LastBatchPolicy.FILL, prepare_first_batch=True)#

用于 Paddle 的通用 DALI 迭代器。它可以从 DALI Pipeline 返回任意数量的输出,形式为 Paddle 的张量。

参数:
  • pipelines (list of Pipeline) – 要使用的 Pipeline 列表

  • output_map (list of str or pair of type (str, int)) – 字符串将 DALI Pipeline 的连续输出映射到用户指定的名称。输出将从迭代器作为这些名称的字典返回。每个名称应是不同的。项目也可以是一对 (str, int),其中 int 值指定结果 LoDTensor 的 LoD 级别。

  • size (int, default = -1) – 包装的 Pipeline 的分片中的样本数(如果超过一个,则为总和)。提供 -1 意味着迭代器将工作到从 iter_setup() 内部引发 StopIteration 为止。选项 last_batch_policylast_batch_padded 在这种情况下不起作用。它仅适用于迭代器内部的一个 Pipeline。与 reader_name 参数互斥

  • reader_name (str, default = None) – 读取器的名称,将查询该读取器的分片大小、分片数以及所有其他属性,这些属性对于正确计数迭代器需要处理的相关和填充样本数是必要的。它会自动设置 last_batch_padded,以与读取器的配置相匹配。

  • auto_reset (string or bool, optional, default = False) –

    迭代器是否为下一个 epoch 重置自身,或者是否需要显式调用 reset()。

    它可以是以下值之一

    • "no", FalseNone - 在 epoch 结束时,引发 StopIteration,并且需要调用 reset()

    • "yes""True"- 在 epoch 结束时,引发 StopIteration,但在内部自动调用 reset()

  • dynamic_shape (any, optional,) – 仅用于向后兼容的参数。

  • fill_last_batch (bool, optional, default = None) –

    已弃用 请改用 last_batch_policy

    是否用数据填充最后一个批次,直到 ‘self.batch_size’。迭代器将返回第一个整数倍的 self._num_gpus * self.batch_size 条目,该条目超过 ‘size’。将此标志设置为 False 将导致迭代器返回正好 ‘size’ 条目。

  • last_batch_policy (optional, default = LastBatchPolicy.FILL) – 当 epoch 中没有足够的样本来完全填充最后一个批次时,该怎么做。请参阅 nvidia.dali.plugin.base_iterator.LastBatchPolicy()

  • last_batch_padded (bool, optional, default = False) – DALI 提供的最后一个批次是否用最后一个样本填充,或者只是包装起来。与 last_batch_policy 结合使用,它会告知迭代器返回的最后一个批次是否仅部分填充了当前 epoch 的数据,是删除填充样本还是来自下一个 epoch 的样本。如果设置为 False,则下一个 epoch 将提前结束,因为来自它的数据已被消耗但已丢弃。如果设置为 True,则下一个 epoch 将与第一个 epoch 的长度相同。为此,还需要将读取器中的 pad_last_batch 选项设置为 True。当提供 reader_name 参数时,它将被覆盖

  • prepare_first_batch (bool, optional, default = True) – DALI 是否应在创建迭代器后立即缓冲第一个批次,以便在提示迭代器获取数据时已准备好一个批次

示例

对于数据集 [1,2,3,4,5,6,7] 和批次大小 2

last_batch_policy = LastBatchPolicy.PARTIAL, last_batch_padded = True -> 最后一个批次 = [7],下一次迭代将返回 [1, 2]

last_batch_policy = LastBatchPolicy.PARTIAL, last_batch_padded = False -> 最后一个批次 = [7],下一次迭代将返回 [2, 3]

last_batch_policy = LastBatchPolicy.FILL, last_batch_padded = True -> 最后一个批次 = [7, 7],下一次迭代将返回 [1, 2]

last_batch_policy = LastBatchPolicy.FILL, last_batch_padded = False -> 最后一个批次 = [7, 1],下一次迭代将返回 [2, 3]

last_batch_policy = LastBatchPolicy.DROP, last_batch_padded = True -> 最后一个批次 = [5, 6],

下一次迭代将返回 [1, 2]

last_batch_policy = LastBatchPolicy.DROP, last_batch_padded = False -> 最后一个批次 = [5, 6],下一次迭代将返回 [2, 3]

checkpoints()#

返回 Pipeline 的当前检查点。

next()#

返回下一批数据。

reset()#

在完整 epoch 后重置迭代器。DALI 迭代器不支持在 epoch 结束前重置,并将忽略此类请求。

property size#
nvidia.dali.plugin.paddle.feed_ndarray(dali_tensor, ptr, cuda_stream=None)#

将 DALI 张量的内容复制到 Paddle 的张量。

参数:
  • dali_tensor (dali.backend.TensorCPU or dali.backend.TensorGPU) – 要复制的张量来源

  • ptr (LoDTensor 数据指针) – 复制目标

  • cuda_stream (cudaStream_t handle or any value that can be cast to cudaStream_t) – 用于复制的 CUDA 流(如果未提供,将选择内部用户流)

nvidia.dali.plugin.paddle.lod_tensor_clip(lod_tensor, size)#
nvidia.dali.plugin.paddle.recursive_length(tensor, lod_level)#
nvidia.dali.plugin.paddle.to_paddle_type(tensor)#

获取给定张量或张量列表的 paddle dtype

参数:

tensor – 张量或张量列表

返回: paddle.framework.core.VarDesc.VarType