torchtext.datasets¶
警告
torchtext 支持的数据集来自 torchdata 项目,该项目仍处于 Beta 状态。这意味着 API 可能会在没有弃用周期的情况下发生变化。特别是,我们预计在 DataLoaderV2
从 torchdata
正式发布后,许多当前的习惯用法将会改变。
以下是一些关于使用 datapipes 的建议
为了对 datapipe 进行洗牌,请在 DataLoader 中进行:
DataLoader(dp, shuffle=True)
。您不需要调用dp.shuffle()
,因为torchtext
已经为您完成了。但是请注意,除非您显式地将shuffle=True
传递给 DataLoader,否则 datapipe 不会被洗牌。在使用多进程 (
num_workers=N
) 时,请使用内置的worker_init_fn
from torch.utils.data.backward_compatibility import worker_init_fn DataLoader(dp, num_workers=4, worker_init_fn=worker_init_fn, drop_last=True)
这将确保数据不会在 worker 之间重复。
我们还建议使用
drop_last=True
。如果没有它,在某些情况下,一个 epoch 末尾的批次大小可能非常小(比其他 map 样式数据集更小)。这可能会严重影响准确性,尤其是在使用批量归一化时。drop_last=True
确保所有批次大小都相等。使用
DistributedDataParallel
进行分布式训练目前还不完全稳定/支持,我们目前不推荐它。它将在 DataLoaderV2 中得到更好的支持。如果您仍然希望使用 DDP,请确保所有 worker(DDP worker 和 DataLoader worker)都看到数据的不同部分。这些数据集已经包装在 ShardingFilter 中,您可能需要在 rank(DDP worker)和 DataLoader worker 之间对数据进行分片,为此您需要调用
dp.apply_sharding(num_shards, shard_id)
。一种方法是创建worker_init_fn
,它使用适当的分片数量(DDP worker * DataLoader worker)和分片 ID(通过 rank 和相应 DataLoader 在 rank 中的 worker ID 推断得出)来调用apply_sharding
。但是请注意,这假设所有 rank 的 DataLoader worker 数量相同。所有 DDP worker 都会处理相同数量的批次。一种方法是通过将每个 worker 中的 datapipe 大小限制为
len(datapipe) // num_ddp_workers
来实现,但这可能不适合所有用例。洗牌种子在所有 worker 中都相同。您可能需要调用
torch.utils.data.graph_settings.apply_shuffle_seed(dp, rng)
洗牌种子在每个 epoch 中都不同。
其余的 RNG(通常用于变换)在 worker 之间是**不同的**,以获得最大熵和最佳准确性。
一般用例如下
# import datasets
from torchtext.datasets import IMDB
train_iter = IMDB(split='train')
def tokenize(label, line):
return line.split()
tokens = []
for label, line in train_iter:
tokens += tokenize(label, line)
目前提供以下数据集。如果您想为代码库贡献新的数据集,或使用自己的自定义数据集,请参考 CONTRIBUTING_DATASETS.md 指南。
文本分类¶
AG_NEWS¶
AmazonReviewFull¶
AmazonReviewPolarity¶
CoLA¶
DBpedia¶
IMDb¶
- torchtext.datasets.IMDB(root: str = '.data', split: Union[Tuple[str], str] = ('train', 'test'))[source]¶
IMDb 数据集
警告
使用 DataPipe 目前仍存在一些注意事项。如果你想使用此数据集进行洗牌、多进程或分布式学习,请参阅此注释以获取更多说明。
有关更多详细信息,请参阅 http://ai.stanford.edu/~amaas/data/sentiment/
- 每个拆分的行数
训练集:25000
测试集:25000
- 参数:
root – 保存数据集的目录。默认值:os.path.expanduser(‘~/.torchtext/cache’)
split – 要返回的拆分或拆分。可以是字符串或字符串元组。默认值:(train, test)
- 返回值:
DataPipe 生成标签(1 到 2)和包含电影评论的文本的元组
- 返回类型:
- 使用
IMDB
的教程 - 用于摘要、情感分类和翻译的 T5-Base 模型
MNLI¶
- torchtext.datasets.MNLI(root='.data', split=('train', 'dev_matched', 'dev_mismatched'))[source]¶
MNLI 数据集
警告
使用 DataPipe 目前仍存在一些注意事项。如果你想使用此数据集进行洗牌、多进程或分布式学习,请参阅此注释以获取更多说明。
有关更多详细信息,请参阅 https://cims.nyu.edu/~sbowman/multinli/
- 每个拆分的行数
训练集:392702
匹配验证集:9815
不匹配验证集:9832
MRPC¶
QNLI¶
- torchtext.datasets.QNLI(root='.data', split=('train', 'dev', 'test'))[source]¶
QNLI 数据集
有关更多详细信息,请参考 https://arxiv.org/pdf/1804.07461.pdf (来自 GLUE 论文)
- 每个拆分的行数
训练集:104743
验证集:5463
测试集:5463
QQP¶
- torchtext.datasets.QQP(root: str)[source]¶
QQP 数据集
警告
使用 DataPipe 目前仍存在一些注意事项。如果你想使用此数据集进行洗牌、多进程或分布式学习,请参阅此注释以获取更多说明。
有关更多详细信息,请参考 https://quoradata.quora.com/First-Quora-Dataset-Release-Question-Pairs
RTE¶
- torchtext.datasets.RTE(root='.data', split=('train', 'dev', 'test'))[source]¶
RTE 数据集
有关更多详细信息,请参考 https://aclweb.org/aclwiki/Recognizing_Textual_Entailment
- 每个拆分的行数
训练集:2490
验证集:277
测试集:3000
SogouNews¶
- torchtext.datasets.SogouNews(root: str = '.data', split: Union[Tuple[str], str] = ('train', 'test'))[source]¶
搜狗新闻数据集
警告
使用 DataPipe 目前仍存在一些注意事项。如果你想使用此数据集进行洗牌、多进程或分布式学习,请参阅此注释以获取更多说明。
有关更多详细信息,请参阅 https://arxiv.org/abs/1509.01626
- 每个拆分的行数
训练集:450000
测试集:60000
- 参数
root: 保存数据集的目录。默认值:os.path.expanduser(‘~/.torchtext/cache’) split: 要返回的拆分或拆分。可以是字符串或字符串元组。默认值:(train, test)
- 返回值:
DataPipe 生成包含新闻标题和内容的标签(1 到 5)和文本的元组
- 返回类型:
(int, str)
SST2¶
- torchtext.datasets.SST2(root='.data', split=('train', 'dev', 'test'))[source]¶
SST2 数据集
警告
使用 DataPipe 目前仍存在一些注意事项。如果你想使用此数据集进行洗牌、多进程或分布式学习,请参阅此注释以获取更多说明。
有关更多详细信息,请参考 https://nlp.stanford.edu/sentiment/
- 每个拆分的行数
训练集:67349
验证集:872
测试集:1821
- 参数:
root – 保存数据集的目录。默认值:os.path.expanduser(‘~/.torchtext/cache’)
split – 要返回的分片或分片列表。可以是字符串或字符串元组。默认值:(train, dev, test)
- 返回值:
DataPipe 生成文本和/或标签(1 到 4)的元组。 test 拆分仅返回文本。
- 返回类型:
- 使用
SST2
的教程 使用 XLM-RoBERTa 模型进行 SST-2 二元文本分类
使用 XLM-RoBERTa 模型进行 SST-2 二元文本分类
STSB¶
- torchtext.datasets.STSB(root='.data', split=('train', 'dev', 'test'))[source]¶
STSB 数据集
警告
使用 DataPipe 目前仍存在一些注意事项。如果你想使用此数据集进行洗牌、多进程或分布式学习,请参阅此注释以获取更多说明。
有关更多详细信息,请参考 https://ixa2.si.ehu.eus/stswiki/index.php/STSbenchmark
- 每个拆分的行数
训练集:5749
验证集:1500
测试集:1379
WNLI¶
- torchtext.datasets.WNLI(root='.data', split=('train', 'dev', 'test'))[source]¶
WNLI 数据集
有关更多详细信息,请参考 https://arxiv.org/pdf/1804.07461v3.pdf
- 每个拆分的行数
训练集:635
验证集:71
测试集:146
YahooAnswers¶
YelpReviewFull¶
YelpReviewPolarity¶
语言建模¶
PennTreebank¶
- torchtext.datasets.PennTreebank(root='.data', split: Union[Tuple[str], str] = ('train', 'valid', 'test'))[source]¶
PennTreebank 数据集
警告
使用 DataPipe 目前仍存在一些注意事项。如果你想使用此数据集进行洗牌、多进程或分布式学习,请参阅此注释以获取更多说明。
有关更多详细信息,请参阅 https://catalog.ldc.upenn.edu/docs/LDC95T7/cl93.html
- 每个拆分的行数
train: 42068
valid: 3370
test: 3761
- 参数:
root – 保存数据集的目录。默认值:os.path.expanduser(‘~/.torchtext/cache’)
split – 要返回的拆分或拆分。可以是字符串或字符串元组。默认值:(train, valid, test)
- 返回值:
生成来自 Treebank 语料库的文本的 DataPipe
- 返回类型:
WikiText-2¶
- torchtext.datasets.WikiText2(root: str = '.data', split: Union[Tuple[str], str] = ('train', 'valid', 'test'))[source]¶
WikiText2 数据集
警告
使用 DataPipe 目前仍存在一些注意事项。如果你想使用此数据集进行洗牌、多进程或分布式学习,请参阅此注释以获取更多说明。
有关更多详细信息,请参阅 https://blog.salesforceairesearch.com/the-wikitext-long-term-dependency-language-modeling-dataset/
- 每个拆分的行数
train: 36718
valid: 3760
test: 4358
- 参数:
root – 保存数据集的目录。默认值:os.path.expanduser(‘~/.torchtext/cache’)
split – 要返回的拆分或拆分。可以是字符串或字符串元组。默认值:(train, valid, test)
- 返回值:
生成来自维基百科文章的文本的 DataPipe
- 返回类型:
WikiText103¶
- torchtext.datasets.WikiText103(root: str = '.data', split: Union[Tuple[str], str] = ('train', 'valid', 'test'))[source]¶
WikiText103 数据集
警告
使用 DataPipe 目前仍存在一些注意事项。如果你想使用此数据集进行洗牌、多进程或分布式学习,请参阅此注释以获取更多说明。
有关更多详细信息,请参阅 https://blog.salesforceairesearch.com/the-wikitext-long-term-dependency-language-modeling-dataset/
- 每个拆分的行数
train: 1801350
valid: 3760
test: 4358
- 参数:
root – 保存数据集的目录。默认值:os.path.expanduser(‘~/.torchtext/cache’)
split – 要返回的拆分或拆分。可以是字符串或字符串元组。默认值:(train, valid, test)
- 返回值:
生成来自维基百科文章的文本的 DataPipe
- 返回类型:
机器翻译¶
IWSLT2016¶
- torchtext.datasets.IWSLT2016(root='.data', split=('train', 'valid', 'test'), language_pair=('de', 'en'), valid_set='tst2013', test_set='tst2014')[source]¶
IWSLT2016 数据集
警告
使用 DataPipe 目前仍存在一些注意事项。如果你想使用此数据集进行洗牌、多进程或分布式学习,请参阅此注释以获取更多说明。
有关更多详细信息,请参阅 https://wit3.fbk.eu/2016-01
可用数据集包括以下内容:
语言对:
“en”
“fr”
“de”
“cs”
“ar”
“en”
x
x
x
x
“fr”
x
“de”
x
“cs”
x
“ar”
x
valid/test sets: [“dev2010”, “tst2010”, “tst2011”, “tst2012”, “tst2013”, “tst2014”]
- 参数:
root – 保存数据集的目录。默认值:os.path.expanduser(‘~/.torchtext/cache’)
split – 要返回的拆分或拆分。可以是字符串或字符串元组。默认值:(‘train’, ‘valid’, ‘test’)
language_pair – 包含源语言和目标语言的元组或列表
valid_set – 用于标识验证集的字符串。
test_set – 用于标识测试集的字符串。
- 返回值:
生成源句子和目标句子的元组的 DataPipe
- 返回类型:
示例
>>> from torchtext.datasets import IWSLT2016 >>> train_iter, valid_iter, test_iter = IWSLT2016() >>> src_sentence, tgt_sentence = next(iter(train_iter))
IWSLT2017¶
- torchtext.datasets.IWSLT2017(root='.data', split=('train', 'valid', 'test'), language_pair=('de', 'en'))[source]¶
IWSLT2017 数据集
警告
使用 DataPipe 目前仍存在一些注意事项。如果你想使用此数据集进行洗牌、多进程或分布式学习,请参阅此注释以获取更多说明。
有关更多详细信息,请参阅 https://wit3.fbk.eu/2017-01
可用数据集包括以下内容:
语言对:
“en”
“nl”
“de”
“it”
“ro”
“en”
x
x
x
x
“nl”
x
x
x
x
“de”
x
x
x
x
“it”
x
x
x
x
“ro”
x
x
x
x
- 参数:
root – 保存数据集的目录。默认值:os.path.expanduser(‘~/.torchtext/cache’)
split – 要返回的拆分或拆分。可以是字符串或字符串元组。默认值:(‘train’, ‘valid’, ‘test’)
language_pair – 包含源语言和目标语言的元组或列表
- 返回值:
生成源句子和目标句子的元组的 DataPipe
- 返回类型:
示例
>>> from torchtext.datasets import IWSLT2017 >>> train_iter, valid_iter, test_iter = IWSLT2017() >>> src_sentence, tgt_sentence = next(iter(train_iter))
Multi30k¶
- torchtext.datasets.Multi30k(root: str = '.data', split: Union[Tuple[str], str] = ('train', 'valid', 'test'), language_pair: Tuple[str] = ('de', 'en'))[source]¶
Multi30k 数据集
警告
使用 DataPipe 目前仍存在一些注意事项。如果你想使用此数据集进行洗牌、多进程或分布式学习,请参阅此注释以获取更多说明。
有关更多详细信息,请参考 https://www.statmt.org/wmt16/multimodal-task.html#task1
- 每个拆分的行数
训练集:29000
验证集:1014
测试集:1000
- 参数:
root – 保存数据集的目录。默认值:os.path.expanduser(‘~/.torchtext/cache’)
split – 要返回的拆分或拆分。可以是字符串或字符串元组。默认值:(‘train’, ‘valid’, ‘test’)
language_pair – 包含源语言和目标语言的元组或列表。可用的选项是 ('de','en') 和 ('en', 'de')
- 返回值:
生成源句子和目标句子的元组的 DataPipe
- 返回类型:
- 使用
Multi30k
的教程 - 用于摘要、情感分类和翻译的 T5-Base 模型
序列标注¶
CoNLL2000分块¶
UDPOS¶
问答¶
SQuAD 1.0¶
SQuAD 2.0¶
无监督学习¶
CC100¶
EnWik9¶
- torchtext.datasets.EnWik9(root: str)[source]¶
EnWik9数据集
警告
使用 DataPipe 目前仍存在一些注意事项。如果你想使用此数据集进行洗牌、多进程或分布式学习,请参阅此注释以获取更多说明。
有关更多详细信息,请参考 http://mattmahoney.net/dc/textdata.html
数据集中的行数:13147026
- 参数:
root – 保存数据集的目录。默认值:os.path.expanduser(‘~/.torchtext/cache’)
- 返回值:
DataPipe,它生成来自 WnWik9 数据集的原始文本行
- 返回类型: