【发布时间】:2022-01-03 13:21:28
【问题描述】:
我已关注this example 使用torchtext 构建文本分类器。
完成训练后,我保存了词汇和权重,但是当我再次加载它们以使用验证数据进行推断时,准确度为零。
我发现了一个类似的问题Using torchtext for inference,但它并没有解决我的问题
def save_vocab(vocab):
import pickle
output = open('vocab.pkl', 'wb')
pickle.dump(vocab, output)
output.close()
save_vocab(TEXT.vocab)
torch.save(model.state_dict(), 'saved_weights.pt')
def read_vocab(path):
#read vocabulary pkl
import pickle
pkl_file = open(path, 'rb')
vocab = pickle.load(pkl_file)
pkl_file.close()
return vocab
vocab = read_vocab('vocab.pkl')
TEXT = data.Field(batch_first=True, include_lengths = True)
LABEL = data.LabelField(dtype = torch.float, batch_first=True)
TEXT.vocab = vocab
LABEL.vocab = vocab
pretrained_embeddings = TEXT.vocab.vectors
model.embedding.weight.data.copy_(pretrained_embeddings)
model.embedding.weight.data[PAD_IDX] = torch.zeros(EMBEDDING_DIM)
#load weights
path='saved_weights.pt'
model.load_state_dict(torch.load(path));
model.eval();
model = model.cuda()
acc = evaluate(model, valid_iterator)
谢谢。
【问题讨论】:
-
torchtext API 发生了巨大变化,使其更加标准并且与 PyTorch 生态系统的其他部分具有互操作性。能分享一下你用的是哪个版本吗?它看起来像旧版本。
-
谢谢。火炬版本是1.10.0a0+ecc3718。
标签: text pytorch lstm torchtext