混洗器¶
- class torchdata.datapipes.map.Shuffler(datapipe: MapDataPipe[T_co], *, indices: Optional[List] = None)¶
通过其索引对输入 MapDataPipe 进行混洗(函数名称:
shuffle
)。当它与
DataLoader
一起使用时,设置随机种子方法根据num_workers
不同。对于单进程模式(
num_workers == 0
),随机种子在主进程中的DataLoader
之前设置。对于多进程模式(num_worker > 0
),worker_init_fn
用于为每个工作进程设置随机种子。- 参数:
datapipe – 被混洗的 MapDataPipe
indices – MapDataPipe 的索引列表。如果未提供,我们假设它使用基于 0 的索引
示例
>>> # xdoctest: +SKIP >>> from torchdata.datapipes.map import SequenceWrapper >>> dp = SequenceWrapper(range(10)) >>> shuffle_dp = dp.shuffle().set_seed(0) >>> list(shuffle_dp) [7, 8, 1, 5, 3, 4, 2, 0, 9, 6] >>> list(shuffle_dp) [6, 1, 9, 5, 2, 4, 7, 3, 8, 0] >>> # Reset seed for Shuffler >>> shuffle_dp = shuffle_dp.set_seed(0) >>> list(shuffle_dp) [7, 8, 1, 5, 3, 4, 2, 0, 9, 6]
注意
即使此
shuffle
操作将MapDataPipe
作为输入,它也会返回IterDataPipe
而不是MapDataPipe
,因为为了随机读取,MapDataPipe
应该对数据顺序不敏感,但IterDataPipe
在数据处理期间依赖于数据的顺序。