Pytorch 在AllenNLP包中保存/加载模型

Pytorch 在AllenNLP包中保存/加载模型,pytorch,allennlp,Pytorch,Allennlp,我正在尝试加载AllenNLP模型权重。我找不到任何关于如何保存/加载整个模型的文档,因此只能使用权重 来自allennlp.nn导入util model\u state=torch.load(filename\u model,map\u location=util.device\u mapping(-1)) 模型。加载状态(模型状态) 我对输入语料库进行了一些修改,我猜正因为如此,我得到的语料库大小不匹配: RuntimeError:BasicTextFieldEmbedder在加载状态下的

我正在尝试加载AllenNLP模型权重。我找不到任何关于如何保存/加载整个模型的文档,因此只能使用权重

来自allennlp.nn导入util
model\u state=torch.load(filename\u model,map\u location=util.device\u mapping(-1))
模型。加载状态(模型状态)
我对输入语料库进行了一些修改,我猜正因为如此,我得到的语料库大小不匹配:

RuntimeError:BasicTextFieldEmbedder在加载状态下的错误:
令牌\嵌入器\令牌的大小不匹配。重量:
从检查点复制具有形状火炬大小([2117,16])的参数,
当前模型中的形状是torch.Size([2129,16])。

似乎没有官方的方法用语料库词汇保存模型。有什么问题吗?

AllenNLP中有一个功能,可以加载或保存模型。 您是否遵循了中概述的步骤?下面我粘贴了教程中您可能感兴趣的片段:

# Here's how to save the model.
with open("/tmp/model.th", 'wb') as f:
    torch.save(model.state_dict(), f)

vocab.save_to_files("/tmp/vocabulary")

# And here's how to reload the model.
vocab2 = Vocabulary.from_files("/tmp/vocabulary")

model2 = LstmTagger(word_embeddings, lstm, vocab2)
with open("/tmp/model.th", 'rb') as f:
    model2.load_state_dict(torch.load(f))
如果上述方法对您不起作用,您可以检查helper函数。使用此功能,您应该能够将模型的训练配置以及权重和词汇表归档到model.tar.gz。 您可以找到关于我所讨论的两种方法的约束的更多信息