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)
- 参数:
size¶ (int, default = -1) – 包装的 Pipeline 的分片中的样本数(如果超过一个,则为总和)。提供 -1 意味着迭代器将工作到从 iter_setup() 内部引发 StopIteration 为止。选项
last_batch_policy
和last_batch_padded
在这种情况下不起作用。它仅适用于迭代器内部的一个 Pipeline。与reader_name
参数互斥reader_name¶ (str, default = None) – 读取器的名称,将查询该读取器的分片大小、分片数以及所有其他属性,这些属性对于正确计数迭代器需要处理的相关和填充样本数是必要的。它会自动设置
last_batch_padded
,以与读取器的配置相匹配。auto_reset¶ (string or bool, optional, default = False) –
迭代器是否为下一个 epoch 重置自身,或者是否需要显式调用 reset()。
它可以是以下值之一
"no"
,False
或None
- 在 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]
和批次大小 2last_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 的张量。
- 参数:
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_policy
和last_batch_padded
在这种情况下不起作用。它仅适用于迭代器内部的一个 Pipeline。与reader_name
参数互斥reader_name¶ (str, default = None) – 读取器的名称,将查询该读取器的分片大小、分片数以及所有其他属性,这些属性对于正确计数迭代器需要处理的相关和填充样本数是必要的。它会自动设置
last_batch_padded
,以与读取器的配置相匹配。auto_reset¶ (string or bool, optional, default = False) –
迭代器是否为下一个 epoch 重置自身,或者是否需要显式调用 reset()。
它可以是以下值之一
"no"
,False
或None
- 在 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]
和批次大小 2last_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 的张量。
- nvidia.dali.plugin.paddle.lod_tensor_clip(lod_tensor, size)#
- nvidia.dali.plugin.paddle.recursive_length(tensor, lod_level)#