【发布时间】:2019-04-02 10:46:21
【问题描述】:
torchtext.data.TabularDataset 可以从 TSV/JSON/CSV 文件创建,然后可用于从 Glove、FastText 或任何其他嵌入构建词汇表。但我的要求是直接从list 或dict 创建一个torchtext.data.TabularDataset。
当前通过读取 TSV 文件实现的代码
self.RAW = data.RawField()
self.TEXT = data.Field(batch_first=True)
self.LABEL = data.Field(sequential=False, unk_token=None)
self.train, self.dev, self.test = data.TabularDataset.splits(
path='.data/quora',
train='train.tsv',
validation='dev.tsv',
test='test.tsv',
format='tsv',
fields=[('label', self.LABEL),
('q1', self.TEXT),
('q2', self.TEXT),
('id', self.RAW)])
self.TEXT.build_vocab(self.train, self.dev, self.test, vectors=GloVe(name='840B', dim=300))
self.LABEL.build_vocab(self.train)
sort_key = lambda x: data.interleave_keys(len(x.q1), len(x.q2))
self.train_iter, self.dev_iter, self.test_iter = \
data.BucketIterator.splits((self.train, self.dev, self.test),
batch_sizes=[args.batch_size] * 3,
device=args.gpu,
sort_key=sort_key)
这是从文件中读取数据的当前工作代码。因此,为了直接从 List/Dict 创建数据集,我尝试了诸如 Examples.fromDict 或 Examples.fromList 之类的内置函数,但是在进入最后一个 for 循环时,它会引发 AttributeError: 'BucketIterator' object has no attribute 'q1'
【问题讨论】:
标签: python dataset pytorch torchtext