小编Arj*_*lal的帖子

如何直接从列表或字典创建 torchtext.data.TabularDataset

torchtext.data.TabularDataset可以从 TSV/JSON/CSV 文件创建,然后它可以用于从 Glove、FastText 或任何其他嵌入构建词汇表。但我的要求是torchtext.data.TabularDataset从 alist或 a直接创建一个dict

通过读取 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)
Run Code Online (Sandbox Code Playgroud)

这是从文件中读取数据的当前工作代码。所以,为了直接从列表/快译通我创建数据集试图像内置的功能Examples.fromDict或Examples.fromList但随后当来到最后一个for循环,它抛出一个错误AttributeError: 'BucketIterator' object has no attribute 'q1'

python dataset pytorch torchtext

8
推荐指数
1
解决办法
6847
查看次数

如何使用伯特嵌入而不是像手套/快速文本之类的静态嵌入来训练神经网络模型?

我正在寻找一些训练以训练具有动态生成的bert嵌入的常规神经网络模型(BERT上下文化的嵌入为同一单词生成不同的嵌入,而该嵌入在不同的上下文中时)。

在正常的神经网络模型中,我们将使用手套或快速文本嵌入(例如,

import torch.nn as nn 

embed = nn.Embedding(vocab_size, vector_size)

embed.weight.data.copy_(some_variable_containing_vectors)
Run Code Online (Sandbox Code Playgroud)

我不想复制这样的静态向量并将其用于训练,我想将每个输入传递给BERT模型,并即时生成单词的嵌入,然后将其输入模型进行训练。

因此,我应该在合并这些嵌入的模型中更改前向功能吗?

任何帮助,将不胜感激!

python artificial-intelligence machine-learning neural-network pytorch

4
推荐指数
1
解决办法
2114
查看次数