After loading pretrained spacy model for finetuning on custom data
spacy.require_gpu()
nlp = spacy.load("en_core_web_trf",exclude=['tagger', 'parser', 'attribute_ruler', 'lemmatizer'])
getting error while loading for validation
model=spacy.load(category_output_dir + "/%s" % itn,exclude=['tagger', 'parser', 'attribute_ruler', 'lemmatizer'])
File "/usr/local/lib/python3.6/dist-packages/spacy/init.py", line 47, in load return util.load_model(name, disable=disable, exclude=exclude, config=config) File "/usr/local/lib/python3.6/dist-packages/spacy/util.py", line 275, in load_model return load_model_from_path(Path(name), **kwargs) File "/usr/local/lib/python3.6/dist-packages/spacy/util.py", line 341, in load_model_from_path return nlp.from_disk(model_path, exclude=exclude) File "/usr/local/lib/python3.6/dist-packages/spacy/language.py", line 1705, in from_disk util.from_disk(path, deserializers, exclude) File "/usr/local/lib/python3.6/dist-packages/spacy/util.py", line 1085, in from_disk reader(path / key) File "/usr/local/lib/python3.6/dist-packages/spacy/language.py", line 1700, in p, exclude=["vocab"] File "spacy/pipeline/transition_parser.pyx", line 479, in spacy.pipeline.transition_parser.Parser.from_disk File "/usr/local/lib/python3.6/dist-packages/thinc/model.py", line 529, in from_bytes return self.from_dict(msg) File "/usr/local/lib/python3.6/dist-packages/thinc/model.py", line 552, in from_dict node.set_dim(dim, value) File "/usr/local/lib/python3.6/dist-packages/thinc/model.py", line 188, in set_dim raise ValueError(err) ValueError: Attempt to change dimension 'nO' for model 'precomputable_affine' from 78 to 74
here is the code snippet
import random
from tqdm import tqdm
import spacy
import os
import copy
from spacy.tokens import Doc
from spacy.training import Example
from spacy.util import minibatch, compounding, decaying
spacy.require_gpu()
nlp = spacy.load("en_core_web_trf",exclude=['tagger', 'parser',
'attribute_ruler', 'lemmatizer'])
ner = nlp.get_pipe('ner')
for _, annotations in TRAIN_DATA:
for ent in annotations.get('entities'):
ner.add_label(ent[2])
for itn in range(n_iter):
random.shuffle(TRAIN_DATA)
losses = {}
for batch in tqdm(minibatch(TRAIN_DATA,size=compounding(4., 64., 1.01))):
for text, annots in batch:
examples = []
try:
examples.append(Example.from_dict(nlp.make_doc(text), annots))
losses=nlp.update(examples,sgd=optimizer,losses=losses)
except:
continue
if use_optimizer_averages:
with nlp.use_params(optimizer.averages):
os.mkdir(output_dir + "/%s" % itn)
nlp.to_disk(output_dir + "/%s" % itn)
model=spacy.load(output_dir + "/%s" % itn,exclude=['tagger', 'parser', 'attribute_ruler', 'lemmatizer'])
Train data format: TRAIN_DATA = [["Who is Shaka Khan?", {"entities": [(7, 17, "FRIENDS")]}],["I like London.", {"entities": [(7, 13, "LOC")]}]]