torchdata库的使用!🦔
torchdata库的使用
1.datapipes
1.1 iter
1.1.1 IterableWrapper
在 TorchData 中,torchdata.datapipes.iter.IterableWrapper
是一个用于封装迭代器的类。它允许你将普通的 Python 迭代器包装成一个 TorchData 可用的数据管道(DataPipe),以便进行更加灵活的数据处理和转换。
IterableWrapper
方法的主要作用是将 Python 中的迭代器包装为 TorchData 中的数据管道,使其可以在 TorchData 的数据处理流程中被使用。这个方法接受一个迭代器作为参数,并返回一个实现了 TorchData 数据管道接口的对象,使得你可以在 TorchData 的管道中应用各种数据转换和操作。
1 |
|
总的来说,IterableWrapper
方法为 TorchData 提供了一种便捷的方式来将普通的 Python 迭代器转换为可以在 TorchData 数据处理流程中使用的数据管道。
1.1.2 FileOpener
在 TorchData 中,torchdata.datapipes.iter.FileOpener
是用于打开文件并生成可迭代对象的类。它可以将文件操作转换为 TorchData 中的数据管道,使得可以轻松地在数据处理流程中使用文件数据。
FileOpener
主要用于处理文件数据,例如读取文本文件、图像文件等等。它接受文件路径作为参数,并返回一个实现了 TorchData 数据管道接口的对象,使得可以在 TorchData 的管道中对文件数据进行各种操作和转换。
1 |
|
1.1.3 CSVParser
接受由文件名和 CSV 数据流组成的 DataPipe,一次读取并返回 CSV 文件中的内容。
1 |
|
1.2 map
1.2.1 MapDataPipe
Map 样式的 DataPipe 是实现 __getitem__()
and __len__()
协议的 DataPipe,它表示从(可能是非整型)索引/键到数据样本的映射。这与 PyTorch 核心库中的 Dataset
类似。
1 |
|
1.3 bucketbatch
bucketbatch
是 TorchText 中用于将数据集分组成桶(buckets)并生成批次数据的函数。这个函数通常在数据处理和准备阶段使用,特别是在序列到序列(sequence-to-sequence)模型中。
bucketbatch
的作用是将具有相似长度的样本分组到同一个桶中,并且可以选择是否对这些桶进行随机化。随后,对每个桶中的样本进行排序,以便能够产生长度相似的序列,并且可以有效地利用填充(padding)以提高批次处理效率。
1 |
|
- 我们保持批量大小 = 4。
- batch_num 是要保留在存储桶中的批次数
- bucket_num 是池中用于洗牌的存储桶数
- sort_key指定获取存储桶并对其进行排序的函数