首页 > 解决方案 > 如何解开 inferSent 和加载模型?

问题描述

我有一个工作代码,可以简单地加载推断模型。现在,它不会解开模型

    MODEL_PATH = "./encoder/infersent1.pkl" 
    params_model = {'bsize': 64, 'word_emb_dim': 300, 'enc_lstm_dim': 2048,
                'pool_type': 'max', 'dpout_model': 0.0, 'version': 
    model_version}
    inferSent = InferSent(params_model)
    print(MODEL_PATH)
    inferSent.load_state_dict(torch.load(MODEL_PATH))

use_cuda = False
inferSent = inferSent.cuda() if use_cuda else inferSent
# If infersent1 -> use GloVe embeddings. If infersent2 -> use InferSent 
embeddings.
W2V_PATH = './dataset/GloVe/glove.840B.300d.txt' if model_version == 1 else 
'../dataset/fastText/crawl-300d-2M.vec'
inferSent.set_w2v_path(W2V_PATH)

UnpicklingError:无效的加载键,'<'。

标签: pickletorch

解决方案


这个问题的原因是你的pickle文件没有正确下载。检查文件的大小,它应该在 160 MB 左右。出于某种原因,推断回购中的链接不起作用。您可以使用存储库中提供的 train_nli.py 脚本构建自己的 NLI 模型。python train_nli.py --word_emb_path '你的词嵌入(例如 GloVe/fastText)'


推荐阅读