PaddlePaddle Plugin API reference#

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,
)#

DALI iterator for classification tasks for Paddle. It returns 2 outputs (data and label) in the form of LoDTensor.

Calling

DALIClassificationIterator(pipelines, reader_name)

is equivalent to calling

DALIGenericIterator(pipelines, ["data", "label"], reader_name)
Parameters:
  • pipelines (list of Pipeline) – List of pipelines to use

  • size (int, default = -1) – Number of samples in the shard. For multiple pipelines, this is the sum of their shard sizes. Mutually exclusive with reader_name. When left at -1 without reader_name, a single-pipeline iterator reads until the pipeline raises StopIteration, for example when an external source is exhausted; last_batch_policy and last_batch_padded do not apply.

  • reader_name (str, default = None) – Name of the reader operator that determines the iterator length and last-batch padding. It must match the reader’s name argument in every supplied pipeline. When set, size and last_batch_padded are determined automatically and must not be provided. It does not change last_batch_policy.

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

    Whether the iterator resets itself for the next epoch or it requires reset() to be called explicitly.

    It can be one of the following values:

    • "no", False or None - at the end of epoch StopIteration is raised and reset() needs to be called

    • "yes" or "True"- at the end of epoch StopIteration is raised but reset() is called internally automatically

  • dynamic_shape (any, optional,) – Parameter used only for backward compatibility.

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

    Deprecated Please use last_batch_policy instead

    Whether to fill the last batch with data up to ‘self.batch_size’. The iterator would return the first integer multiple of self._num_gpus * self.batch_size entries which exceeds ‘size’. Setting this flag to False will cause the iterator to return exactly ‘size’ entries.

  • last_batch_policy (optional, default = LastBatchPolicy.FILL) – What to do with the last batch when there are not enough samples in the epoch to fully fill it. See nvidia.dali.plugin.base_iterator.LastBatchPolicy()

  • last_batch_padded (bool, optional, default = False) – Whether the reader pads the last batch by repeating its last sample (True) or continues into the next epoch (False). Without reader_name, set this to the same value as the reader’s pad_last_batch argument. With reader_name, it is determined automatically and must not be provided.

  • prepare_first_batch (bool, optional, default = True) – Whether DALI should buffer the first batch right after the creation of the iterator, so one batch is already prepared when the iterator is prompted for the data

Example

With the data set [1,2,3,4,5,6,7] and the batch size 2:

last_batch_policy = LastBatchPolicy.PARTIAL, last_batch_padded = True -> last batch = [7], next iteration will return [1, 2]

last_batch_policy = LastBatchPolicy.PARTIAL, last_batch_padded = False -> last batch = [7], next iteration will return [2, 3]

last_batch_policy = LastBatchPolicy.FILL, last_batch_padded = True -> last batch = [7, 7], next iteration will return [1, 2]

last_batch_policy = LastBatchPolicy.FILL, last_batch_padded = False -> last batch = [7, 1], next iteration will return [2, 3]

last_batch_policy = LastBatchPolicy.DROP, last_batch_padded = True -> last batch = [5, 6], next iteration will return [1, 2]

last_batch_policy = LastBatchPolicy.DROP, last_batch_padded = False -> last batch = [5, 6], next iteration will return [2, 3]

checkpoints()#

Returns the current checkpoints of the pipelines.

next()#

Returns the next batch of data.

reset()#

Resets the iterator after the full epoch. DALI iterators do not support resetting before the end of the epoch and will ignore such request.

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,
)#

General DALI iterator for Paddle. It can return any number of outputs from the DALI pipeline in the form of Paddle’s Tensors.

Parameters:
  • pipelines (list of Pipeline) – List of pipelines to use

  • output_map (list of str or pair of type (str, int)) – The strings maps consecutive outputs of DALI pipelines to user specified name. Outputs will be returned from iterator as dictionary of those names. Each name should be distinct. Item can also be a pair of (str, int), where the int value specifies the LoD level of the resulting LoDTensor.

  • size (int, default = -1) – Number of samples in the shard. For multiple pipelines, this is the sum of their shard sizes. Mutually exclusive with reader_name. When left at -1 without reader_name, a single-pipeline iterator reads until the pipeline raises StopIteration, for example when an external source is exhausted; last_batch_policy and last_batch_padded do not apply.

  • reader_name (str, default = None) – Name of the reader operator that determines the iterator length and last-batch padding. It must match the reader’s name argument in every supplied pipeline. When set, size and last_batch_padded are determined automatically and must not be provided. It does not change last_batch_policy.

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

    Whether the iterator resets itself for the next epoch or it requires reset() to be called explicitly.

    It can be one of the following values:

    • "no", False or None - at the end of epoch StopIteration is raised and reset() needs to be called

    • "yes" or "True"- at the end of epoch StopIteration is raised but reset() is called internally automatically

  • dynamic_shape (any, optional,) – Parameter used only for backward compatibility.

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

    Deprecated Please use last_batch_policy instead

    Whether to fill the last batch with data up to ‘self.batch_size’. The iterator would return the first integer multiple of self._num_gpus * self.batch_size entries which exceeds ‘size’. Setting this flag to False will cause the iterator to return exactly ‘size’ entries.

  • last_batch_policy (optional, default = LastBatchPolicy.FILL) – What to do with the last batch when there are not enough samples in the epoch to fully fill it. See nvidia.dali.plugin.base_iterator.LastBatchPolicy()

  • last_batch_padded (bool, optional, default = False) – Whether the reader pads the last batch by repeating its last sample (True) or continues into the next epoch (False). Without reader_name, set this to the same value as the reader’s pad_last_batch argument. With reader_name, it is determined automatically and must not be provided.

  • prepare_first_batch (bool, optional, default = True) – Whether DALI should buffer the first batch right after the creation of the iterator, so one batch is already prepared when the iterator is prompted for the data

Example

With the data set [1,2,3,4,5,6,7] and the batch size 2:

last_batch_policy = LastBatchPolicy.PARTIAL, last_batch_padded = True -> last batch = [7], next iteration will return [1, 2]

last_batch_policy = LastBatchPolicy.PARTIAL, last_batch_padded = False -> last batch = [7], next iteration will return [2, 3]

last_batch_policy = LastBatchPolicy.FILL, last_batch_padded = True -> last batch = [7, 7], next iteration will return [1, 2]

last_batch_policy = LastBatchPolicy.FILL, last_batch_padded = False -> last batch = [7, 1], next iteration will return [2, 3]

last_batch_policy = LastBatchPolicy.DROP, last_batch_padded = True -> last batch = [5, 6],

next iteration will return [1, 2]

last_batch_policy = LastBatchPolicy.DROP, last_batch_padded = False -> last batch = [5, 6], next iteration will return [2, 3]

checkpoints()#

Returns the current checkpoints of the pipelines.

next()#

Returns the next batch of data.

reset()#

Resets the iterator after the full epoch. DALI iterators do not support resetting before the end of the epoch and will ignore such request.

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

Copy contents of DALI tensor to Paddle’s Tensor.

Parameters:
  • dali_tensor (dali.backend.TensorCPU or dali.backend.TensorGPU) – Tensor from which to copy

  • ptr (LoDTensor data pointer) – Destination of the copy

  • cuda_stream (cudaStream_t handle or any value that can be cast to cudaStream_t) – CUDA stream to be used for the copy (if not provided, an internal user stream will be selected)

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)#

Get paddle dtype for given tensor or tensor list

Parameters:

tensor – tensor or tensor list

Returns: paddle.framework.core.VarDesc.VarType