从 pytorch 的 torchtext 库中保存词汇对象

Saving vocabulary object from pytorch's torchtext library

使用 pytorch 的 torchtext 构建文本分类模型。词汇表对象在 data.field :

def create_tabularDataset_object(self,csv_path):
   self.TEXT = data.Field(tokenize=self.tokenizer,batch_first=True,include_lengths=True)
   self.LABEL = data.LabelField(dtype = torch.float,batch_first=True)
def get_vocab_with_glov(self,data):
   # initialize glove embeddings
   self.TEXT.build_vocab(data,min_freq=100,vectors = "glove.6B.100d")

训练后,在生产中为模型提供服务时,我如何保存 TEXT 对象?在预测时,我需要它来索引单词标记

[TEXT.vocab.stoi[t] for t in tokenizedׁ_sentence]

我是不是遗漏了什么,而且没有必要拿着那个东西?除了模型权重,我还需要任何其他文件吗?

我发现我可以将它保存为 pkl: 将 TEXT.vocab 保存为 pkl 有效:

def save_vocab(vocab, path):
    import pickle
    output = open(path, 'wb')
    pickle.dump(vocab, output)
    output.close()

哪里

vocab = TEXT.vocab 

照常阅读。

实际上最好的方法(更稳定)是使用 torch 内置函数 torch.save(*)

保存文件示例:

torch.save(vocab_obj, 'vocab_obj.pth')

再次加载文件:

vocab_obj = torch.load('vocab_obj.pth')