• 文档 >
  • Map 样式 DataPipes
快捷方式

Map 样式 DataPipes

Map 样式 DataPipe 是实现了 __getitem__()__len__() 协议的 DataPipe,它表示从(可能是非整数)索引/键到数据样本的映射。这与 PyTorch 核心库中的 Dataset 非常相似。

例如,当使用 mapdatapipe[idx] 访问时,可以从磁盘上的文件夹中读取第 idx 张图像及其对应的标签。

class torchdata.datapipes.map.MapDataPipe(*args, **kwds)

Map 样式 DataPipe。

所有表示从键到数据样本映射的数据集都应该继承自此类。子类应该覆盖 __getitem__(),支持为给定的唯一键获取数据样本。子类还可以选择性地覆盖 __len__(),许多 Sampler 实现和 DataLoader 的默认选项都期望此方法返回数据集的大小。

这些 DataPipes 可以通过两种方式调用,使用类构造函数或将其函数形式应用于现有的 MapDataPipe(推荐,大多数 DataPipes 都可用,但并非全部)。

注意

DataLoader 默认情况下会构造一个索引采样器,该采样器会生成整数索引。要使其与具有非整数索引/键的 Map 样式 DataPipe 一起使用,必须提供自定义采样器。

示例

>>> # xdoctest: +SKIP
>>> from torchdata.datapipes.map import SequenceWrapper, Mapper
>>> dp = SequenceWrapper(range(10))
>>> map_dp_1 = dp.map(lambda x: x + 1)  # Using functional form (recommended)
>>> list(map_dp_1)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> map_dp_2 = Mapper(dp, lambda x: x + 1)  # Using class constructor
>>> list(map_dp_2)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> batch_dp = map_dp_1.batch(batch_size=2)
>>> list(batch_dp)
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]

根据设计,MapDataPipeIterDataPipe 少,以避免与 MapDataPipe 相同功能的重复实现。我们鼓励用户使用内置的 IterDataPipe 执行各种功能,并在需要时使用 IterToMapConverter.to_map_datapipe() 将其转换为 MapDataPipe。如果您在使用 MapDataPipe 时有任何关于用法或最佳实践的问题,请随时在 PyTorch 论坛的 “数据”类别 下提问。

我们乐于添加额外的 MapDataPipe,其中操作可以延迟执行并且可以预先知道 __len__。请随时在 此 Github 问题 中提出建议并说明您的用例。关于我们设计选择的反馈也欢迎在该 Github 问题中提出。

以下是可用 Map 样式 DataPipes 的列表

MapDataPipes 列表

Batcher

创建数据的小批量(函数名称:batch)。

Concater

连接多个 Map DataPipes(函数名称:concat)。

InMemoryCacheHolder

将源 DataPipe 中的元素存储在内存中(函数名称:in_memory_cache)。

IterToMapConverter

延迟加载来自 IterDataPipe 的数据以构建一个 MapDataPipe,其中键值对由 key_value_fn 生成(函数名称:to_map_datapipe)。

Mapper

对源 DataPipe 中的每个项目应用输入函数(函数名称:map)。

SequenceWrapper

将序列对象包装成 MapDataPipe。

Shuffler

通过其索引对输入 MapDataPipe 进行混洗(函数名称:shuffle)。

UnZipper

接收一个包含序列的 DataPipe,解包每个序列,并根据它们在序列中的位置将元素返回到单独的 DataPipes 中(函数名称:unzip)。

Zipper

从每个输入 DataPipes 中聚合元素到一个元组中(函数名称:zip)。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

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

查看教程

资源

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

查看资源