pickle - 如何解开 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:无效的加载键,'<'。
解决方案
这个问题的原因是你的pickle文件没有正确下载。检查文件的大小,它应该在 160 MB 左右。出于某种原因,推断回购中的链接不起作用。您可以使用存储库中提供的 train_nli.py 脚本构建自己的 NLI 模型。python train_nli.py --word_emb_path '你的词嵌入(例如 GloVe/fastText)'
推荐阅读
- android - 将当前位置添加到 fragment.class
- python - rmarkdown中的python(网状)
- java - 关闭 HttpClient 版本 4.0.3
- mongodb - 我如何找出哪些管道已用于创建视图?
- node.js - tslint 错误 - 阴影名称:'err'
- ruby-on-rails - Rails将带有数组的哈希转换为to_xml,而数组周围没有标签
- spring - 控制台显示错误,如图所示,需要摆脱它
- symfony - 如何在 Symfony 3.4 下使用 SQLite 功能测试启用外键检查
- mysql - 如何获取mysql中所有值都相同的那些行
- android - Android:是否可以/建议与适配器的绑定服务进行交互?