torchtext.datasets¶
警告
torchtext 支持的数据集是来自 torchdata 项目 的 DataPipe,目前仍处于 Beta 阶段。这意味着 API 可能会在没有弃用周期的情况下发生变化。特别是,我们预计随着 torchdata 中 DataLoaderV2 的最终发布,当前的许多用法将会发生变化。
以下是关于使用 DataPipe 的一些建议:
若要对 DataPipe 进行洗牌(shuffling),请在 DataLoader 中进行:
DataLoader(dp, shuffle=True)。你无需调用dp.shuffle(),因为torchtext已经为你完成了。但请注意,除非你显式地将shuffle=True传递给 DataLoader,否则 DataPipe 不会被洗牌。当使用多进程(
num_workers=N)时,请使用内置的worker_init_fnfrom 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 末尾的 batch 大小可能会非常小(比其他映射式(map-style)数据集更小)。这可能会极大地影响准确率,特别是在使用 batch-norm 时。drop_last=True可确保所有 batch 大小相等。使用
DistributedDataParallel进行分布式训练目前尚不完全稳定/受支持,因此我们目前不建议这样做。在 DataLoaderV2 中将会得到更好的支持。如果你仍希望使用 DDP,请确保:所有工作进程(DDP worker 和 DataLoader worker)看到的是数据的不同部分。数据集已经包装在 ShardingFilter 中,你可能需要调用
dp.apply_sharding(num_shards, shard_id)以便在各个分片(DDP worker)和 DataLoader worker 之间切分数据。一种实现方法是创建一个worker_init_fn,调用带有适当分片数量(DDP worker * DataLoader worker)和分片 ID(通过 rank 和相应 DataLoader 的 worker ID 推断得出)的apply_sharding。不过请注意,这假设所有 rank 的 DataLoader worker 数量相等。所有 DDP worker 处理相同数量的 batch。一种方法是将每个 worker 内的 DataPipe 大小限制为
len(datapipe) // num_ddp_workers,但这可能并不适用于所有用例。所有 worker 的洗牌种子(shuffling seed)相同。你可能需要调用
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¶
- torchtext.datasets.AmazonReviewPolarity(root: str = '.data', split: Union[Tuple[str], str] = ('train', 'test'))[source]¶
AmazonReviewPolarity 数据集
警告
目前使用 DataPipe 仍有一些注意事项。如果你希望在洗牌、多进程或分布式学习中使用此数据集,请参阅 此说明 获取进一步指导。
有关详细信息,请参阅 https://arxiv.org/abs/1509.01626
- 每个拆分(split)的行数
train: 3600000
test: 400000
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/
- 每个拆分(split)的行数
train: 25000
test: 25000
- 参数:
root – 保存数据集的目录。默认:os.path.expanduser(‘~/.torchtext/cache’)
split – 要返回的拆分。可以是字符串或字符串元组。默认:(train, test)
- 返回:
产生标签(1 到 2)和包含电影评论的文本元组的 DataPipe
- 返回类型:
- 使用
IMDB的教程
MNLI¶
- torchtext.datasets.MNLI(root='.data', split=('train', 'dev_matched', 'dev_mismatched'))[source]¶
MNLI 数据集
警告
目前使用 DataPipe 仍有一些注意事项。如果你希望在洗牌、多进程或分布式学习中使用此数据集,请参阅 此说明 获取进一步指导。
有关详细信息,请参阅 https://cims.nyu.edu/~sbowman/multinli/
- 每个拆分(split)的行数
train: 392702
dev_matched: 9815
dev_mismatched: 9832
MRPC¶
QNLI¶
- torchtext.datasets.QNLI(root='.data', split=('train', 'dev', 'test'))[source]¶
QNLI 数据集
有关详细信息,请参阅 https://arxiv.org/pdf/1804.07461.pdf(来自 GLUE 论文)
- 每个拆分(split)的行数
train: 104743
dev: 5463
test: 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
- 每个拆分(split)的行数
train: 2490
dev: 277
test: 3000
SogouNews¶
- torchtext.datasets.SogouNews(root: str = '.data', split: Union[Tuple[str], str] = ('train', 'test'))[source]¶
SogouNews 数据集
警告
目前使用 DataPipe 仍有一些注意事项。如果你希望在洗牌、多进程或分布式学习中使用此数据集,请参阅 此说明 获取进一步指导。
有关详细信息,请参阅 https://arxiv.org/abs/1509.01626
- 每个拆分(split)的行数
train: 450000
test: 60000
- 参数 (Args)
root: 保存数据集的目录。默认:os.path.expanduser(‘~/.torchtext/cache’) split: 要返回的拆分。可以是字符串或字符串元组。默认:(train, test)
- 返回:
产生标签(1 到 5)和包含新闻标题及内容的文本元组的 DataPipe
- 返回类型:
(int, str)
SST2¶
- torchtext.datasets.SST2(root='.data', split=('train', 'dev', 'test'))[source]¶
SST2 数据集
警告
目前使用 DataPipe 仍有一些注意事项。如果你希望在洗牌、多进程或分布式学习中使用此数据集,请参阅 此说明 获取进一步指导。
有关详细信息,请参阅 https://nlp.stanford.edu/sentiment/
- 每个拆分(split)的行数
train: 67349
dev: 872
test: 1821
- 参数:
root – 保存数据集的目录。默认:os.path.expanduser(‘~/.torchtext/cache’)
split – 要返回的拆分。可以是字符串或字符串元组。默认:(train, dev, test)
- 返回:
产生文本和/或标签(1 到 4)元组的 DataPipe。test 拆分仅返回文本。
- 返回类型:
- 使用
SST2的教程
STSB¶
- torchtext.datasets.STSB(root='.data', split=('train', 'dev', 'test'))[source]¶
STSB 数据集
警告
目前使用 DataPipe 仍有一些注意事项。如果你希望在洗牌、多进程或分布式学习中使用此数据集,请参阅 此说明 获取进一步指导。
有关详细信息,请参阅 https://ixa2.si.ehu.eus/stswiki/index.php/STSbenchmark
- 每个拆分(split)的行数
train: 5749
dev: 1500
test: 1379
WNLI¶
- torchtext.datasets.WNLI(root='.data', split=('train', 'dev', 'test'))[source]¶
WNLI 数据集
有关详细信息,请参阅 https://arxiv.org/pdf/1804.07461v3.pdf
- 每个拆分(split)的行数
train: 635
dev: 71
test: 146
YahooAnswers¶
YelpReviewFull¶
YelpReviewPolarity¶
语言模型(Language Modeling)¶
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
- 每个拆分(split)的行数
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/
- 每个拆分(split)的行数
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/
- 每个拆分(split)的行数
train: 1801350
valid: 3760
test: 4358
- 参数:
root – 保存数据集的目录。默认:os.path.expanduser(‘~/.torchtext/cache’)
split – 要返回的拆分。可以是字符串或字符串元组。默认:(train, valid, test)
- 返回:
产生维基百科文章文本的 DataPipe
- 返回类型:
机器翻译(Machine Translation)¶
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
验证/测试集: [“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
- 每个拆分(split)的行数
train: 29000
valid: 1014
test: 1000
- 参数:
root – 保存数据集的目录。默认:os.path.expanduser(‘~/.torchtext/cache’)
split – 要返回的拆分。可以是字符串或字符串元组。默认:(‘train’, ‘valid’, ‘test’)
language_pair – 包含源语言和目标语言的元组或列表。可用选项为 (‘de’,’en’) 和 (‘en’, ‘de’)
- 返回:
产生源语言和目标语言句子元组的 DataPipe
- 返回类型:
- 使用
Multi30k的教程
序列标注(Sequence Tagging)¶
CoNLL2000Chunking¶
- torchtext.datasets.CoNLL2000Chunking(root: str = '.data', split: Union[Tuple[str], str] = ('train', 'test'))[source]¶
CoNLL2000Chunking 数据集
警告
目前使用 DataPipe 仍有一些注意事项。如果你希望在洗牌、多进程或分布式学习中使用此数据集,请参阅 此说明 获取进一步指导。
有关详细信息,请参阅 https://www.clips.uantwerpen.be/conll2000/chunking/
- 每个拆分(split)的行数
train: 8936
test: 2012
UDPOS¶
问答(Question Answer)¶
SQuAD 1.0¶
SQuAD 2.0¶
无监督学习(Unsupervised Learning)¶
CC100¶
EnWik9¶
- torchtext.datasets.EnWik9(root: str)[source]¶
EnWik9 数据集
警告
目前使用 DataPipe 仍有一些注意事项。如果你希望在洗牌、多进程或分布式学习中使用此数据集,请参阅 此说明 获取进一步指导。
有关详细信息,请参阅 http://mattmahoney.net/dc/textdata.html
数据集中行数: 13147026
- 参数:
root – 保存数据集的目录。默认:os.path.expanduser(‘~/.torchtext/cache’)
- 返回:
产生 WnWik9 数据集原始文本行的 DataPipe
- 返回类型: