快捷方式

解复用器

class torchdata.datapipes.iter.Demultiplexer(datapipe: IterDataPipe, num_instances: int, classifier_fn: Callable[[T_co], Optional[int]], drop_none: bool = False, buffer_size: int = 1000)

使用给定的分类函数(函数名:demux)将输入 DataPipe 拆分为多个子 DataPipe。

此操作将返回子 DataPipe 的列表。

参数:
  • datapipe – 正在过滤的可迭代 DataPipe

  • num_instances – 要创建的 DataPipe 实例数量

  • classifier_fn – 一个函数,它将值映射到范围 [0, num_instances - 1] 内的整数或 None

  • drop_none – 默认值为 False,如果为 True,则函数将跳过分类为 None 的元素

  • buffer_size – 这定义了缓冲区在所有子 DataPipe 等待其值被生成时可以容纳的最大输入数量。默认值为 1000。使用 -1 表示无限缓冲区。

示例

>>> # xdoctest: +REQUIRES(module:torchdata)
>>> from torchdata.datapipes.iter import IterableWrapper
>>> def odd_or_even(n):
...     return n % 2
>>> source_dp = IterableWrapper(range(5))
>>> dp1, dp2 = source_dp.demux(num_instances=2, classifier_fn=odd_or_even)
>>> list(dp1)
[0, 2, 4]
>>> list(dp2)
[1, 3]
>>> # It can also filter out any element that gets `None` from the `classifier_fn`
>>> def odd_or_even_no_zero(n):
...     return n % 2 if n != 0 else None
>>> dp1, dp2 = source_dp.demux(num_instances=2, classifier_fn=odd_or_even_no_zero, drop_none=True)
>>> list(dp1)
[2, 4]
>>> list(dp2)
[1, 3]

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取针对初学者和高级开发人员的深入教程

查看教程

资源

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

查看资源