目录

Iterable 风格的 DataPipes

可迭代样式的数据集是实现协议 ,表示数据样本的可迭代对象。这种类型的数据集特别适用于随机 读取是昂贵的,甚至是不可能的,并且批处理大小取决于获取的数据。__iter__()

例如,这样的数据集在调用时可以返回从数据库读取的数据流 远程服务器,甚至是实时生成的日志。iter(iterdatapipe)

这是 in 的更新版本。IterableDatasettorch

torchdata.datapipes.iter 中。IterDataPipe*args**kwds)

Iterable 样式的 DataPipe 中。

所有表示数据样本可迭代对象的 DataPipes 都应该子类化 this。 当数据来自流时,这种风格的 DataPipes 特别有用,或者 当样本数量太大而无法将它们全部放入内存中时。

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

IterDataPipe 是延迟初始化的,并且其元素仅在调用 在其迭代器上。next()

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

注意

当子类与 一起使用时,每个 item 将从迭代器中生成。当 ,每个工作进程都将具有 DataPipe 对象的不同副本,因此通常需要配置 每个副本,以避免从 工人。,在 worker 中调用 process 返回有关工作程序的信息。它可以用于 dataset 的方法或 的选项来修改每个副本的行为。DataLoaderDataLoadernum_workers > 0get_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]

我们有不同类型的可迭代 DataPipes:

  1. 存档 - 打开和解压缩不同格式的存档文件。

  2. Augmenting - 增强您的样本(例如,添加索引或无限循环)。

  3. Combinatorial - 执行组合运算(例如采样、洗牌)。

  4. 组合/拆分 - 通过组合或一对多来与多个 DataPipe 进行交互。

  5. Grouping - 在 DataPipe 中对样本进行分组

  6. IO - 与文件系统或远程服务器交互(例如下载、打开、 保存文件,并在目录中列出文件)。

  7. 映射 - 将给定函数应用于 DataPipe 中的每个元素。

  8. 其他 - 执行其他操作集。

  9. 选择 - 在 DataPipe 中选择特定样本。

  10. 文本 - 解析、读取和转换文本文件和数据

存档 DataPipes

这些 DataPipes 有助于打开和解压缩不同格式的存档文件。

解压缩器

采用 path 元组和压缩的数据流,并返回 path 的元组和解压缩的数据流(函数名称:)。decompress

RarArchiveLoader 文件

从包含路径名和 rar 二进制流元组的输入 Iterable Datapipes 中解压缩 rar 二进制流,并产生路径名和提取的二进制流(函数名称:)的元组。load_from_rar

TarArchiveLoader 格式

从包含路径名和 tar 二进制流元组的 Iterable DataPipe 打开/解压缩 tar 二进制流,并生成路径名和提取的二进制流(函数名称:)的元组。load_from_tar

XzFileLoader 文件加载器

从包含路径名和 xy 二进制流元组的可迭代 DataPipe 中解压缩 xz (lzma) 二进制流,并产生路径名和提取的二进制流(函数名称:)的元组。load_from_xz

ZipArchiveLoader 文件

从 Iterable DataPipe 打开/解压缩 zip 二进制流,该 DataPipe 包含路径名和 zip 二进制流的元组,并生成路径名和提取的二进制流的元组(函数名称:)。load_from_zip

扩充 DataPipes

这些 DataPipes 有助于增强您的样本。

循环仪

默认情况下,永久循环指定的输入,或循环指定的次数(函数名称:)。cycle

枚举 数

通过枚举向已有的 DataPipe 添加索引,索引默认从 0 开始(函数名称: )。enumerate

IndexAdder

使用 (function name: ) 向现有的 Iterable DataPipe 添加索引。add_index

组合 DataPipes

这些 DataPipes 有助于执行组合运算。

采样

使用提供的 (默认为 ) 生成示例元素。SamplerSequentialSampler

洗牌机

使用缓冲区(功能名称:)对输入 DataPipe 进行随机排序。shuffle

合并/拆分 DataPipe

这些操作往往涉及多个 DataPipe,将它们组合起来或将一对多拆分。

连接

连接多个 Iterable DataPipe(函数名称:)。concat

解复用器

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

分叉器

创建同一 Iterable DataPipe 的多个实例(函数名称:)。fork

IterKeyZipper

根据匹配的键(函数名称:)将两个 IterDataPipes 压缩在一起。zip_with_iter

MapKeyZipper

将源 IterDataPipe 中的项与 MapDataPipe(函数名称:)中的项联接起来。zip_with_map

复 用

从每个输入的 Iterable DataPipes (function name: ) 中一次产生一个元素。mux

SampleMultiplexer (样品多路复用器)

采用 (IterDataPipe, Weight) 的 Dict,并通过从这些 DataPipes 中采样其权重来生成项目。

解开拉链

接收序列的 DataPipe,解包每个序列,并根据元素在 Sequence 中的位置在单独的 DataPipes 中返回元素。

拉链

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

对 DataPipes 进行分组

这些 DataPipes 允许您在 DataPipe 中对样本进行分组。

Batcher (批处理器)

创建小批量数据 (function name: )。batch

BucketBatcher

从排序的存储桶(功能名称:)创建小批量数据。bucketbatch

对照者

通过自定义 collate 函数(函数名称:)将 DataPipe 中的样本整理到 Tensor(s)。collate

石斑鱼

按从 生成的键对来自输入 IterDataPipe 的数据进行分组,并生成一个批量大小不超过定义的 (function name: )。group_key_fnDataChunkgroup_sizegroupby

取消批处理

撤消数据批处理(函数名称:)。unbatch

IO 数据管道

这些 DataPipes 有助于与文件系统或远程服务器交互(例如,下载、打开、 保存文件,并在目录中列出文件)。

FSSpecFileLister

在提供的路径名或 URL 处列出目录的内容,并生成目录中每个文件的完整路径名或 URL。root

FSSpecFileOpener

从包含 fsspec 路径的 input datapipe 打开文件,并生成路径名和打开的文件流(功能名称:)的元组。open_file_by_fsspec

FSSpecSaver

接收元数据和数据元组的 DataPipe,将数据保存到目标路径(由 filepath_fn 和 metadata 生成),并生成生成的 fsspec 路径(函数名称:)。save_by_fsspec

FileLister 文件列表

给定根目录的路径,生成根目录中的文件路径名(路径 + 文件名)。

FileOpener 文件打开

给定路径名,打开文件并在 Tuples 中生成 pathname 和 file stream。

GDriveReader

采用指向 GDrive 文件的 URL,并生成文件名和 IO 流的元组。

HttpReader

获取文件 URL(指向文件的 HTTP URL),并生成文件 URL 和 IO 流的元组。

IoPathFileLister (英语)

在提供的路径名或 URL 处列出目录的内容,并生成目录中每个文件的完整路径名或 URL。root

IoPathFileOpener

从包含路径名或 URL 的 Importing datapipe 打开文件,并生成路径名和打开的文件流(function name: )的元组。open_file_by_iopath

IoPathSaver (英语)

接收元数据和数据元组的 DataPipe,将数据保存到由 and 元数据生成的目标路径,并以 iopath 格式(功能名称:)生成结果路径。filepath_fnsave_by_iopath

在线阅读器

获取文件 URL(可以是指向文件的 HTTP URL 或指向 GDrive 文件的 URL),并生成文件 URL 和 IO 流的元组。

ParquetDataFrameLoader

获取 Parquet 文件的路径,并返回 Parquet 文件(函数名称:)中每个行组的 TorchArrow DataFrame。load_parquet_as_df

保护

接收元数据和数据元组的 DataPipe,将数据保存到 and 元数据生成的目标路径,并在本地文件系统上生成文件路径(功能名称:)。filepath_fnsave_to_disk

映射 DataPipes

这些 DataPipe 将给定函数应用于 DataPipe 中的每个元素。

FlatMapper

将函数应用于源 DataPipe 中的每个项目,然后将输出展平为单个未嵌套的 IterDataPipe(函数名称:)。flatmap

映射

将函数应用于源 DataPipe 中的每个项目(函数名称:)。map

其他 DataPipe

具有不同功能的杂项 DataPipe。

DataFrameMaker 公司

获取数据行,将大量数据批处理在一起,并创建 TorchArrow DataFrame (function name: )。dataframe

EndOnDiskCacheHolder

指示何时将先前 DataPipe 的结果保存为 (function name: ) 指定的本地文件。filepath_fnend_caching

哈希检查器

从文件名和 data/stream (函数名称: ) 元组的输入 DataPipe 计算并检查每个文件的哈希值。check_hash

InMemoryCacheHolder 中

将源 DataPipe 中的元素存储在内存中,如果指定,则最多为大小限制 (function name: )。in_memory_cache

IterableWrapper 包装器

包装一个可迭代对象以创建 IterDataPipe。

OnDiskCacheHolder

将多个 DataPipe 操作的输出缓存到本地文件,这些文件通常是性能瓶颈,如 download、decompress 等(功能名称:)。on_disk_cache

ShardingFilter

允许对 DataPipe 进行分片的包装器(函数名称: )。sharding_filter

选择 DataPipes

这些 DataPipes 可帮助您在 DataPipe 中选择特定示例。

滤波器

根据输入(功能名称:)从源数据管道中筛选出元素。filter_fnfilter

页眉

从源 DataPipe 开始生成元素,直到指定的限制(函数名称: )。header

文本 DataPipes

这些 DataPipes 可帮助您解析、读取和转换文本文件和数据。

CSVDict解析器

接受 DataPipe 由文件名和 CSV 数据流的元组组成,一次读取并返回 CSV 文件中的一行内容(函数名称:)。parse_csv_as_dict

CSVParser

接受 DataPipe 由文件名和 CSV 数据流的元组组成,一次读取并返回 CSV 文件中的一行内容(函数名称:)。parse_csv

Json解析器

从 JSON 数据流中读取并生成文件名和 JSON 数据的元组(函数名称:)。parse_json_files

LineReader 系列

接受由文件名和字符串数据流的元组组成的 DataPipe,对于流中的每一行,生成文件名和行(函数名称:)的元组。readlines

段落聚合器

将同一文件中的文本行聚合到一个段落中(功能名称:)。lines_to_paragraphs

路由解码器

对来自输入 DataPipe 的二进制流进行解码,在元组(函数名称:)中生成路径名和解码数据。routed_decode

Rows2Columnar

接受包含批量数据的输入 DataPipe,一次处理一个批次,并为每个批次生成一个 Dict,其中键和每行中相应值的列表作为值(函数名称:)。column_namesrows2columnar

StreamReader 系列

给定 IO 流及其标签名称,在元组中生成带有标签名称的字节。

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

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

查看教程

资源

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

查看资源