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'
我正在寻找一些训练以训练具有动态生成的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