快捷方式

ShuffledFlatMapper

class torchdata.datapipes.iter.ShuffledFlatMapper(datapipe: IterDataPipe, fn: Optional[Callable] = None, input_col=None, buffer_size: int = 100)

对源 DataPipe 中的每个项目应用函数,然后将返回的可迭代对象收集到一个缓冲区中,然后,在每次迭代中,随机选择缓冲区中的一個可迭代对象,并从该可迭代对象中生成一个项目(函数名称:shuffled_flatmap)。

缓冲区满后,DataPipe 将开始从缓冲区中的可迭代对象生成元素。新可迭代对象将在现有可迭代对象用完元素后添加到缓冲区中。 .. 注意

The output from ``fn`` must be an Iterable. Otherwise, an error will be raised.
If ``fn`` is ``None``, source DataPipe will be just flattened vertically, provided that items can be unpacked.
参数:
  • datapipe – 源 IterDataPipe

  • fn – 要应用于 DataPipe 中每个元素的函数,输出必须是 Sequence

  • input_col

    应用 fn 的数据索引或索引,例如

    • None 作为默认值,直接将 fn 应用于数据。

    • 整数用于列表/元组。

    • 键用于字典。

  • buffer_size – 此 DataPipe 可以同时容纳的最大可迭代对象数量(默认值为 100

示例

>>> from torchdata.datapipes.iter import IterableWrapper
>>> source_dp = IterableWrapper([[1, 2, 3, 4], 'abcd', 'ABCD'])
>>> shuffled_flatmapped_dp = source_dp.shuffled_flatmap(buffer_size=2)
>>> list(shuffled_flatmapped_dp)
['a', 'b', 'c', 1, 'd', 'A', 'B', 'C', 2, 'D', 3, 4]
>>>
>>> # To shuffle all the elements, you can combine `shuffled_flatmap` with `in_batch_shuffle` like this:
>>> fully_shuffled_flatmapped_dp = source_dp.in_batch_shuffle()
>>> fully_shuffled_flatmapped_dp = fully_shuffled_flatmapped_dp.shuffled_flatmap()
>>> list(fully_shuffled_flatmapped_dp)
['b', 3, 'c', 'd', 'C', 'A', 'a', 2, 'B', 'D', 4, 1]

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源