地图样式数据管道¶
一个地图式数据管道是实现 __getitem__() 和 __len__() 协议的,它表示一个从(可能不是整数)索引/键到数据样本的映射。
例如,当访问 mapdatapipe[idx] 时,可以读取磁盘上文件夹中的第 idx 张图像及其对应标签。
- class torchdata.datapipes.map.MapDataPipe(*args, **kwds)¶
地图风格的数据管道。
所有表示从键到数据样本映射的数据集都应该继承自这个类。 子类应该重写
__getitem__(),支持根据给定的、唯一的键获取一个数据样本。子类也可以选择性地重写__len__(),这通常由许多实现预期返回数据集的大小,并且默认选项为Sampler和DataLoader。这些DataPipes可以通过两种方式调用,使用类构造函数或将其功能形式应用到现有的MapDataPipe(推荐,适用于大多数但并非所有DataPipes)。
注意
DataLoader默认情况下构建一个索引采样器,该采样器返回整数索引。要使其与具有非整数索引/键的映射式DataPipe一起工作,必须提供自定义采样器。示例
>>> 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]]
以下是可用的Map风格DataPipes列表:
DataPipes¶
创建数据小批量(功能名称: |
|
将多个Map DataPipes进行连接(功能名称: |
|
从 |
|
在源DataPipe中应用输入函数(功能名称: |
|
将序列对象包装成MapDataPipe。 |
|
随机打乱输入的数据管道通过其索引(功能名称: |
|
聚合每个输入DataPipes中的元素,形成一个元组(函数名: |