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]