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

    是否使用数据填充最后一个 batch,直到 'self.batch_size'。迭代器将返回第一个超过 'size' 的 self._num_gpus * self.batch_size 条目的整数倍。将此标志设置为 False 将导致迭代器精确返回 'size' 条目。

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

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

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

示例

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

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

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

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

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

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

last_batch_policy = LastBatchPolicy.DROP, last_batch_padded = False -> 最后一个 batch = [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 的 Tensor 形式返回任意数量的输出。

参数:
  • 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

    是否使用数据填充最后一个 batch,直到 'self.batch_size'。迭代器将返回第一个超过 'size' 的 self._num_gpus * self.batch_size 条目的整数倍。将此标志设置为 False 将导致迭代器精确返回 'size' 条目。

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

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

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

示例

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

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

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

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

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

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

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

last_batch_policy = LastBatchPolicy.DROP, last_batch_padded = False -> 最后一个 batch = [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 的 Tensor。

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

  • ptr (LoDTensor data pointer) – 复制的目标

  • 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