注意力
2024 年 6 月状态更新:删除 DataPipes 和 DataLoader V2
我们将 torchdata 存储库重新调整为torch.utils.data.DataLoader的迭代增强。我们不打算 继续开发或维护 [DataPipes] 和 [DataLoaderV2] 解决方案,它们将从 torchdata 存储库。我们还将重新访问 pytorch/pytorch 中的 DataPipes 引用。在 torchdata==0.8.0(2024 年 7 月)版本中,它们将被标记为已弃用,而在 0.9.0(2024 年 10 月)中,它们将被删除。现存 建议用户固定到 torchdata==0.8.0 或更旧版本,直到他们能够迁移出去。随后的 版本将不包含 DataPipes 或 DataLoaderV2。 如果您有建议或评论,请联系我们(请使用此问题进行反馈)
地图样式的 DataPipes¶
Map 风格的 DataPipe 是实现 and 协议的 DataPipe,它表示一个 map
from (可能是非整数的) indices/keys to data samples.这与 PyTorch 中的等效
core 库。__getitem__()
__len__()
Dataset
例如,当使用 进行访问时,可以读取第 --个图像及其
磁盘上文件夹中的相应标签。mapdatapipe[idx]
idx
- 类 torchdata.datapipes.map。MapDataPipe¶
Map-style DataPipe 的 DataPipe 方法。
表示从键到数据样本的映射的所有数据集都应该子类化 this。 子类应该覆盖 ,支持获取 给定唯一键的数据示例。子类还可以选择覆盖 ,预计许多实现和默认选项会返回数据集的大小 之。
__getitem__()
__len__()
Sampler
DataLoader
可以通过两种方式调用这些 DataPipe,使用类构造函数或应用它们的 功能形式添加到现有的 MapDataPipe 上(推荐,适用于大多数但不是所有 DataPipe)。
注意
DataLoader
默认情况下,构造一个索引 sampler 生成整数索引。使其使用地图样式 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]]
根据设计,存在较少的 以避免相同的重复实现
功能作为 .我们鼓励用户使用内置功能、
,然后根据需要使用 或 将其转换为 。
如果您对使用方法或使用时的最佳实践有任何疑问,请随时在 PyTorch 上提问
论坛的 'data' 类别下。
MapDataPipe
IterDataPipe
MapDataPipe
IterDataPipe
MapDataPipe
.to_map_datapipe()
MapDataPipe
我们愿意添加额外的操作,这些操作可以延迟执行,并且可以
提前知道。欢迎在此 Github 问题中提出建议并描述您的用例。关于我们设计选择的反馈也是
在那个 Github 问题中受到欢迎。MapDataPipe
__len__
以下是可用的 Map 样式 DataPipe 的列表:
MapDataPipes 列表¶
创建小批量数据(函数名称:)。 |
|
连接多个 Map DataPipes(函数名称:)。 |
|
将源 DataPipe 中的元素存储在内存中(功能名称:)。 |
|
延迟加载数据以构造 a 和 (function name: ) 生成的键值对。 |
|
将输入函数应用于源 DataPipe 中的每个项目(函数名称:)。 |
|
将序列对象包装到 MapDataPipe 中。 |
|
通过索引(函数名称:)对输入 MapDataPipe 进行随机排序。 |
|
接收序列的 DataPipe,解包每个序列,并根据元素在 Sequence 中的位置(函数名称:)在单独的 DataPipes 中返回元素。 |
|
将每个输入 DataPipes 的元素聚合到一个元组中(函数名称:)。 |