在进行训练时,我使用为训练集词汇表中的单词挑选的预训练嵌入矩阵初始化嵌入矩阵。在
import torchtext as tt
contexts = tt.data.Field(lower=True, sequential=True, tokenize=tokenizer, use_vocab=True)
contexts.build_vocab(data, vectors="fasttext.en.300d",
vectors_cache=config["vectors_cache"])
在我的模型中我通过上下文.vocab作为参数并初始化嵌入:
^{pr2}$我训练我的模型,并在训练期间通过torch.save(model, f)
保存其“最佳”状态。在
然后我想在单独的文件中测试/创建模型的演示,以供评估。我通过torch.load
加载模型。如何扩展嵌入矩阵以包含测试词汇表?我试着替换嵌入矩阵
# data is TabularDataset with test data
contexts.build_vocab(data, vectors="fasttext.en.300d",
vectors_cache=config["vectors_cache"])
model.embeddings = torch.nn.Embedding(len(contexts.vocab), contexts.vocab.vectors.shape[1])
model.embeddings.weight.data.copy_(contexts.vocab.vectors)
model.embeddings.weight.requires_grad = False
但结果很糟糕(几乎0精度)。模特在训练中表现不错。正确的做法是什么?在
目前没有回答
相关问题 更多 >
编程相关推荐