尝试使用预训练时错误的广播输入数组形状错误

时间:2019-04-19 04:54:04

标签: spacy

我正在尝试将spacy的“预训练”功能用于NER任务,所以这是我尝试做的事情(我仍在尝试使用它),

步骤1:首先,我使用“ en_core_web_lg”初始化模型,然后将该模型保存到磁盘,并在几行中测试了其NER功能,以查看它是否能够识别这些测试行中的标签。 (记下被忽略的标签)

步骤2:接下来,我创建了一个.jsonl文件,其中包含要训练的新数据(大约20条新行,我想通过给定围绕实体的新数据来查看模型的功能(之前发现的忽略标记) )在进行迁移学习后将能够正确识别标签)。因此,使用此.jsonl和我保存的较早文件的模型时,我使用了'spacy pre-train'命令进行训练,这为我创建了一个token2vec .bin文件(model999.bin)。

第3步:接下来,我创建了一个函数,该函数获取早期保存的模型(在第1步中保存的模型)的位置和token2vec(在第2步中获得的model999.bin文件)的位置。在函数内部加载模型>创建/获取管道>禁用其余文件>使用(pipe_name).model.tok2vec.from_bytes(file_.read())从model999.bin读取并将学习到的向量广播到基本模型

但是当我运行此功能时,出现此错误: ValueError: could not broadcast input array from shape (96,3,384) into shape (96,3,480) (我已将整个笔记本上传到此处:[https://github.com/pratikdk/ner_test/blob/master/base_model_contextual_TF.ipynb])。

为了进行预训练,我使用了此功能 python -m spacy pre-train ub.jsonl model_saves w2s

这是我尝试在基本模型之上训练的20条线 [https://github.com/pratikdk/ner_test/blob/master/ub.jsonl]

我到底在做什么错?请您也指出解决办法,我相信很多人都需要对此进行深入了解。

环境

  • 操作系统:CentOS
  • 使用的Python版本:3.7.3
  • 使用的spaCy版本:2.1.3
  • 环境信息:Anaconda Jupyter Lab

1 个答案:

答案 0 :(得分:0)

所以我能够解决这个问题,开发人员(在github上)回答了我的问题。 答案是: https://github.com/explosion/spaCy/issues/3616