当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PyTorch IterDataPipe用法及代码示例


本文简要介绍python语言中 torchdata.datapipes.iter.IterDataPipe 的用法。

用法:

class torchdata.datapipes.iter.IterDataPipe(*args, **kwds)

Iterable-style 数据管道。

所有表示可迭代数据样本的 DataPipes 都应该对其进行子类化。当数据来自流或样本数量太大而无法全部放入内存时,这种DataPipes 样式特别有用。

所有子类都应覆盖 __iter__() ,这将返回此 DataPipe 中的样本迭代器。

IterDataPipe 被延迟初始化,并且仅当在其迭代器上调用 next() 时才计算其元素。

这些DataPipes可以通过两种方式调用,使用类构造函数或将它们的函数形式应用到现有的IterDataPipe上(推荐,适用于大多数但不是所有DataPipe)。您可以将多个IterDataPipe链接在一起形成一个连续执行多个操作的管道。

注意

当子类与 DataLoader 一起使用时,DataPipe 中的每一项都将从 DataLoader 迭代器中生成。当 num_workers > 0 时,每个工作进程将拥有 DataPipe 对象的不同副本,因此通常需要独立配置每个副本,以避免从工作进程返回重复的数据。 get_worker_info() 在工作进程中调用时,返回有关工作进程的信息。它可以在数据集的 __iter__() 方法或 DataLoaderworker_init_fn 选项中使用,以修改每个副本的行为。

示例

>>> from torchdata.datapipes.iter import IterableWrapper, Mapper
>>> dp = IterableWrapper(range(10))
>>> map_dp_1 = Mapper(dp, lambda x: x + 1)  # Using class constructor
>>> map_dp_2 = dp.map(lambda x: x + 1)  # Using functional form (recommended)
>>> list(map_dp_1)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(map_dp_2)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> filter_dp = map_dp_1.filter(lambda x: x % 2 == 0)
>>> list(filter_dp)
[2, 4, 6, 8, 10]

相关用法


注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torchdata.datapipes.iter.IterDataPipe。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。