从 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')
使用 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')